3.1查看php配置文件得位置:
#/usr/local/php/bin/php -i |grep -i "loaded configuration file"
3.2限定disable_functions,禁用phpinfo,配置:
#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
3.3定义date.timezone,减少警告:
#vi /usr/local/php/bin/php
找到date. timezone设置如下:
date.timezone = Asia/Shanghai
3.4 display_errors 配置:
# vim /usr/local/php/etc/php. ini
//搜索log_errors, 改成如下
log_errors=On
//再搜索error. log,改为
error_log = /var/log/php/php_errors.log
//再搜索error_reporting 改为
error_reporting = E ALL & ~E_ NOTICE
//再搜索display_errors,改为
display_errors = Off
配置完php.ini,还需额外配置:
#mkdir /var/log/php
#chmod 777 /var/log/php
# /usr/local/apache2.4/bin/apachectl graceful
下面做一个演示:
# vim /data/wwwroot/testdomain.com/test.php
<?php
echo 111
# curl -A‘"123" -I -x127.0.0.1:80 testdomain. com/test .php
状态码500
# cat /var/1og/php/php_errors.log
//显示错误日志
3.5记录错误日志:
# vim /usr/local/php/etc/php. ini
//搜索1og_ errors, 改成如下
1og_ errors=On
3.6定义错误日志级别:
# vim /usr/local/php/etc/php. ini
//搜索error. _reporting. 改为
error_ reporting = E ALL & ~E_ NOTICE
3.7 open_basedir配置
先看在php.ini中设置open_basedir
# vim /usr/local/php/etc/php.ini
//搜索open_basedir,改成如下
open_ basedir = /tmp:/data/wwwroot/testdomain.com
因为限制了PHP只能在/tmp和/data/wwwroot/testdomain.com两个目录下面活动
所以演示如下
# /usr/1ocal/apache2.4/bin/ apachectl graceful
# cp /usr/local/apache2.4/htdocs/1.php /data/wwwroot/testdomain.com/
# curl -x127.0.0.1:80 -I testdomain.com/1.php
状态码500
3.8为虚拟主机配置open_basedir
#vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/testdomain.com"
ServerName www.testdomain.com
ServerAlias testdomain.com
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined
php_admin_value open_basedir "/data/wwwroot/testdomain.com/:/tmp/"
</VirtualHost>
//起作用的是php_admin_value,它定义了php.ini的参数
3.9 PHP扩展模块安装
# /usr/local/php/bin/php -m
//如何查看PHP加载了哪些模块
#cd /usr/local/src
#wget http://pecl.php.net/get/redis-2.2.5.tgz
//安装一个新的redis
#tar -zxvf redis-2.2.5.tgz
# wget https://codeload.github.com/phpredis/phpredis/zip/develop
# mv develop phpredis-develop.zip
# unzip !$
# cd phpredis-develop
#yum install -y autoconf
//因为有一处错误需要安装
#/usr/local/php/bin/phpize
//目的生成configure文件
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
./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 - 20131226/
//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模块
redis