三. PHP配置
3.1查看php配置文件得位置:
虽然PHP是以httpd一个模块的形式存在的,但是PHP本身也有自己的配置文件
/usr/local/php/bin/php -i |grep -i "loaded configuration file"
3.2限定disable_functions,禁用phpinfo,配置:
3.2.1介绍
PHP有诸多内置的函数,有一些函数(比如exec)会直接调取Linux系统命令,如果开放将会非常危险。因此,基于安全考虑应该把一些存在安全风险的函数禁掉:
3.2.2配置
vim /usr/local/php/etc/php.ini
//搜索disable_functions 编辑更改如下:
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,1eak,popepassthru,stream_socket_server,popen,proc_open,proc_close
这些被禁掉的函数是不能在PHP代码中调用的。更改完php.ini后,由于需要在httpd中调用PHP,所以还需要重启httpd服务使其生效。
3.3定义date.timezone,减少警告:
3.3.1配置
php.ini为PHP的配置文件,可以看出其在/usr/local/php/etc/php.ini
第一行的Warning为警告信息可以忽略,取消这个警告需要编辑php:ini, 找到date. timezone设置如下:
#vim /usr/local/php/etc/php.ini
找到date. timezone设置如下:
date.timezone = Asia/Shanghai
3.3.2配置验证:
3.4. display_errors 配置、记录错误日志并定义错误日志级别:
3.4.1介绍
PHP的日志对于程序员来讲非常重要,它是排查问题的重要手段。设置PHP错误日志,有诸多步骤:
3.4.2配置
vim /usr/local/php/etc/php.ini
搜索log_errors 更改如下
搜索error_log 更改如下
搜索error_reporting 更改如下
搜索display_errors 更改如下
log_errors可以设置为on或者off,如果想让PHP记录错误日志,需要设置为on。error, _log设定错误日志路径; error_reporting设定错误日志的级别,E_ALL为所有类型的日志,不管是提醒还是警告都会记录。在开发环境下面设置为E_ALL, 可以方便程序员排查问题,但也会造成日志记录很多无意义的内容。&符号表示并且,~表示排除,所以两个组合在一起就是在E_ALL的基础上排除掉notice相关的日志。
display_ errors设置为on,则会把错误日志直接显示在浏览器里,这样对于用户访问来说体验不好,而且还会暴露网站的一些文件路径等重要信息,所以要设置为off。设置完php.ini,还需做一些额外的操作:
mkdir /var/log/php
chmod 777 /var/log/php //需要保证PHP的错误日志所在目录存在,并且权限为可写
/usr/local/apache2.4/bin/apachectl graceful
3.4.3配置验证:
vim /data/wwwoot/www.123.com/test.php //写入如下内容,其中故意把结尾的;丢掉
<?php
echo 111
curl -A "123" -I -x127.0.0.1:80 www.123.com/test.php
出现了状态码500,说明我访问的页面是存在错误的,查看PHP的日志来判定错误原因:
cat /var/log/php/php_errors.log
通过日志可以判断,test.php文件第三行少了分号。
3.5 open_basedir配置
3.5.1介绍
open_basedir, 它的作用是将网站限定在指定目录里
3.5.2配置
vim /usr/local/php/etc/php.ini
搜索open_basedir并修改
open_basedir = /tmp:/data/wwwroot/www.123.com
限制PHP只能在/tmp和/data/wwwroot/www.123.com两个目录下面活动
3.5.3配置验证:
发现aming .com/1.php不能访问,状态码为500,
3.6 为虚拟主机配置open_basedir
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
3.7PHP扩展模块安装
查看PHP都加载了哪些功能模块:
/usr/local/php/bin/php -m
安装一个PHP的redis扩展模块:
cd /usr/local/src/
wget https://codeload.github.com/phpredis/phpredis/zip/develop
wget http://pecl.php.net/get/redis-2.2.5.tgz
tar -zxvf redis-2.2.5.tgz
mv develop phpredis-develop.zip
unzip !$
cd phpredis-develop
yum install -y autoconf
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
Installing shared extensions: /usr/local/php/lib/ php/extensions/ no-debug- zts - 20191227/
//make install时候编译好的就会放在这个目录里
ls /usr/local/php/lib/php/extensions/no-debug-zts-20~~
//可以看到rdis.so
vim /usr/local/php/etc/php.ini
//增加一行配置(可以放在文件最后一行)
extension = redis.so
/usr/local/php/bin/php -m |grep redis
//查看是否加载了redis模块