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.ini
,timezone
字段打开,去掉;
,追加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.ini
中default_socket
指定的路径。指定为/tmp/mysql.sock
,要修改的有3个。
主机(站点)配置
单站点配置项
默认情况下,apache
安装成,就默认配置好了一个站点,该站点的实际位置在apache
安装位置/htdocs
.
一个站点的两个核心信息为:1.主机名(服务器名/站点名)serverName
2.站点位置(站点目录路径).
端口监听: 在apache
的httpd.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
来设定,单可能不够方便。
apache
配置修改,必须重启。- 某个站点中的夏季目录的访问权限,不方便单独设置。
这种,可以成为"集中式权限";
分布式权限,就是针对某个网站的任何一个下级目录,都可以单独去设置其访问权限,并且可以不重启apache
就生效。
方法–>
-
在该站点对应目录权限的
DIrectory
配置中添加一条:AllowOverride all
,表示当前目录允许’分布式‘权限配置。 -
在该目录下的任何子目录中,创建一个特殊的文件(
.htaccess
),在该文件中写所需要的"权限内容"(内容几乎和Directory
写法一致),内容为:Deny from all Allow form 192.168.3.4
多站点的配置
-
在
apache
的主配置文件httpd.conf
中,“放行”多站点虚拟主机配置文件项(关键字:vhosts
),如果放行了,httpd-vhosts.conf
设置里面的DocumentRoot
路径的访问优先级最高,当配置一个时候所有的默认的访问资源路径就是VirtualHost *:80
标签的配置。 -
在
httpd-vhosts.conf
文件中,设定希望提供多站点服务的ip地址和端口号,通常默认就是:*:80,其中*
代表所有的ip
,默认其实apache
安装好之后就设置好了,无需手动设置(NameVirtualHost *:80 // apache2.4不需要加
). -
然后一个站点一个站点加上。形式如下
<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.2
和2.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这个目录,此时却可以访问。
实现这种技术,这就是所谓"目录别名"(虚拟目录)的设置,如下:
-
设置目录别名的名字和真实的物理路径
-
并为其设置目录的访问权限
#设置一个虚拟目录(目录别名) Alias /soft "/Users/suzeyu/demo" <Directory ""> Options Indexes require all granted </Directory>