目录

PHP(一)-环境搭建

自学小笔记

ok 由于是练习笔记,其下过程显得安装磕磕绊绊. 我直接放入一个看到一个还不错的简易安装mac下Web服务教程查看详细教程

解决mysql在mac下安装问题跳转

PHP

缩写:personal Home Page ==> HypeText Preprocessor.

历史

  • 1995 PHP/FI Rasmus Lorderf,Presonal Home Page.
  • 1997PHP/FI2.0, 1998PHP3, 2000PHP4, 2005PHP5

php的应用领域

web服务器脚本:主要作用

运行php文件: php -f "php文件路径"

运行php代码: php -r "php脚本代码"

php作为一门语言,本身可以是一个纯绿色的“文件夹”–称之为“php语言包”

php网页运行原理

mac下自带apache2,打开终端:open /etc 可以看到有apache2文件夹。

默认部署路径 使用Finder选择前往,输入/资源库/WebServer/Documents/.

apache2下的httpd.conf文件是进行配置的。

  • DocumentRoot 是部署路径(如果403,对Directory进行Options None AllowOverride None Order deny,allow allow from all 修改)
  • listen 是端口号

关联php和apache

找到apache的配置文件httpd.conf.#LoadModule php5_module...去掉前面的#注释。进行装载php模块。

重启apache即可 sudo apachectl restart

获取时间

获取时间 .date("Y-m-d H-i-s");

如果不配置字符集会出现乱码,配置和HTML一样。

直接获取的不是北京时间,需要修改php.initimezone字段打开,去掉;,追加PRC-中国。并且需要让apache知道php.ini的位置。PHPIniDir "/usr/local/etc/php/5.6/php.ini"

PHP连接数据库配置

mysql作为一个php的模块 应该首先配置。

1.在php.ini文件中,设定模块所在的路径(查找关键字extension_dir);默认注释,去掉注释。

2.继续这个文件 解放并初始化mysql模块(查找关键字php_mysql.dll,去掉;)

3.mac下,必须指定php.inidefault_socket 指定的路径。指定为/tmp/mysql.sock,要修改的有3个。

主机(站点)配置

单站点配置项 默认情况下,apache安装成,就默认配置好了一个站点,该站点的实际位置在apache安装位置/htdocs.

一个站点的两个核心信息为:1.主机名(服务器名/站点名)serverName 2.站点位置(站点目录路径).

端口监听: 在apachehttpd.conf文件中的 Listen字段。(支持多个listen监听)。

如果只写端口,表示本机的多个ip都使用该端口。否则表示只负责该ip端口。

设置主机的物理路径

DocumentRoot – 实际物理路径。(站点就是文件夹,我可以随便指定站点)。

httpd.cong中站点是可以更改的。

<Directory "/xxx/xxxx">
	Options Indexes
	Order Deny,Allow
	Allow from all
</Directory>

目录访问权限

一个站点,就是一个目录,每个目录都给其设置“访问权限”,语法如下。

  • options indexes:设置当一个请求中没有给定请求的文件名又没有默认网页(首页)的时候,显示文件列表。
  • Order Deny,Allow: 设置权限控制的先后顺序,只有两种:Deny,allow(先拒绝,后允许),Allow,deny(先允许后拒绝)
  • Dyny from 拒绝名单 用来设定要拒绝访问的来源地址或服务器,几乎没有意义。
  • DirectoryIndex 设置该文件夹下的默认网页,可以设置多个,用于请求中不带文件名的时候自动使用。

目录访问权限中的“分布式权限”

对于某个目录的访问权限,我们在apache中使用Directory来设定,单可能不够方便。

  1. apache配置修改,必须重启。
  2. 某个站点中的夏季目录的访问权限,不方便单独设置。

这种,可以成为"集中式权限";

分布式权限,就是针对某个网站的任何一个下级目录,都可以单独去设置其访问权限,并且可以不重启apache就生效。

方法–>

  1. 在该站点对应目录权限的DIrectory配置中添加一条:AllowOverride all,表示当前目录允许’分布式‘权限配置。

  2. 在该目录下的任何子目录中,创建一个特殊的文件(.htaccess ),在该文件中写所需要的"权限内容"(内容几乎和Directory写法一致),内容为:

     Deny from all
     Allow form 192.168.3.4
    

多站点的配置

  1. apache的主配置文件httpd.conf中,“放行”多站点虚拟主机配置文件项(关键字:vhosts),如果放行了,httpd-vhosts.conf设置里面的DocumentRoot路径的访问优先级最高,当配置一个时候所有的默认的访问资源路径就是VirtualHost *:80标签的配置。

  2. httpd-vhosts.conf文件中,设定希望提供多站点服务的ip地址和端口号,通常默认就是:*:80,其中*代表所有的ip,默认其实apache安装好之后就设置好了,无需手动设置(NameVirtualHost *:80 // apache2.4不需要加).

  3. 然后一个站点一个站点加上。形式如下

     <virtualhost *:80>
     	#这里设置站点1的各项信息
     	ServerName www.test.com
    
     	#设定该站点的别名,即通过一下域名也可以访问,
     	ServerAlias map.php.com tv.php.com
    
     	DocumentRoot "dirSrc"
     	<Directory "dirSrc">
     		...
     	</Directory>
     </virtualhost>
     <virtualhost *:80>
     	#这里设置站点2的各项信息
     </virtualhost>
     ...
    

注意:

1.先把httpd-vhosts.conf文件中的2个初始安装生成的站点,删除。(可用命令$ httpd -t来检测语法)。

2.每个站点的设置项,主要就3个:ServerName,DocumentRoot,<Directory>...</Directory>。

3.在多站点配置中,第一个站点被称为"默认站点",如果某个请求的域名无法跟任何一个站点匹配,就会当做请求的默认站点去处理(应答)。

4.一旦实现了多站点配置,则最初安装成功时的"默认站点"就失效了。

*此处apache2.22.4略有不同,在2.4 访问权限使用了新的字段替换之前的如下

<Directory "/Library/WebServer/Documents">
	#2.4之前
	Order allow,deny
	Allow From all
	
	#2.4采用了require开确认
	Require all granted #允许客户端所有请求
	Require all denied #拒绝客户端所有请求
	Require ip 192.168.1.0/24 #允许192.168.1.0/24网络主机访问。
</Directory>

目录别名(虚拟目录)的设置

某个站点www.abc.com所对应文件夹下有一个目录为d1,则可以这样访问目录:www.abc.com/d1

d1就称为"真实目录"

虚拟目录:该站点下不存在某目录名,但却可以使用同样的语法形式,比如:www.abc.com/d2 //假设该站点目录下根本就没有d2这个目录,此时却可以访问。

实现这种技术,这就是所谓"目录别名"(虚拟目录)的设置,如下:

  1. 设置目录别名的名字和真实的物理路径

  2. 并为其设置目录的访问权限

      #设置一个虚拟目录(目录别名)
      Alias /soft "/Users/suzeyu/demo"
      <Directory "">
     	 Options Indexes
     	 require all granted
      </Directory>