LAMP 架构——PHP 相关配置

查看 PHP 配置文件的位置

1,命令行模式

[root@dl-001 ~]# /usr/local/php/bin/php -i | grep -i "loaded configuration file"

Loaded Configuration File => /usr/local/php/etc/php.ini

2,在要访问的目录下创建一个包含 phpinfo() 的 PHP 文件,然后访问该网页即可查看

LAMP 架构——PHP 相关配置

说明:如果上述方法都无法获取到 php.ini 的位置信息,那么可能是系统安装时未拷贝 php.ini 至安装目录。


安全函数设定 disable_functions

由于 phpinfo 会显示出服务器内 LAMP 架构内的很多软件的配置文件等重要文件的信息,所以在生产环境下最好禁掉,防止被黑客获取到系统内部 php 信息,造成损失。测试环境可以不禁。

配置

[root@dl-001 ~]# vim /usr/local/php/etc/php.ini 
disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close,phpinfo
...
// 我们可以禁止php语言内的一部分功能函数解析,这些函数易被黑客用作获取本机信息的工具
// 方法:定位到disable_functions行,在后面添加如下代码

说明:保存 php 配置文件后重启 apache 服务,使配置生效


浏览器访问报错

LAMP 架构——PHP 相关配置


时区 date.timezone

[root@dl-001 ~]# vim /usr/local/php/etc/php.ini 

# 定位到date.timezone行,删除开头的注释符,并在后面添加如下代码
date.timezone = Asia/Shanghai
...

说明:保存后重启 apache 服务生效配置


设置时区前后日志记录时间的变化

[root@dl-001 ~]# tail -n 2 /tmp/php_errors.log 
[26-Dec-2017 13:19:34 UTC] PHP Parse error:  syntax error, unexpected end of file in /data/wwwroot/111.com/test.php on line 4
//设置前

[26-Dec-2017 21:22:01 Asia/Shanghai] PHP Parse error:  syntax error, unexpected end of file in /data/wwwroot/111.com/test.php on line 4
//设置后

日志相关

display_errors=On/Off :设定是否显示错误原因,需要注意的是,此处设置为off(防止用户看到)后必须设置错误日志,设定保存路径,和错误日志级别,否则将无法查找错误原因 。

log_errors=On/Off 开启/关闭错误日志

“error_log=/tmp/” 设定错误日志的保存路径。如果定义好路径后无法生产日志,此时需要检查日志文件所在目录是否有写(w)权限

“error_reporting =” 设定错误日志级别,级别有:E_ ALL 、~E_ NOTICE 、~E_ STRICT 、~E_DEPRECATED(可以自由组合)。生产环境使用:E_ ALL & ~E_ NOTICE就可以。

安全参数“open_basedir”

open_basedir, if set, limits all file operations to the defined directory
; and below.  This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file.  
译:如果设置了open_basedir选项,将会把所有关于文件的操作限制在指定目录及其子目录。
将该指令设定在每个目录或者虚拟主机web服务器配置文件中非常重要。

说明: php.ini 文件中的内容是针对所有虚拟主机进行的配置。

问题: 一台服务器运行着不止一台虚拟主机,所以在该文件下设置该选项并不合适。那么,该如何设定该配置呢?
办法: 分别在每个虚拟主机的配置文件进行相关设置。

[root@dl-001 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
php_admin_value open_basedir "/data/wwwroot/111.com:/tmp/"

说明:
“php_admin_value”可以定义 php.ini 中的参数。使用该办法分别在每个虚拟主机设定相关的“open_basedir”即可!
在此开放“/tmp/”目录是为了使临时文件能正常写入。