php.ini配置文件详解
/usr/local/php/bin/php -i |head可以查看到调用的php.ini配置文件在哪里,它是以分号为注释符号,常用的配置有
vim /usr/local/php/bin/php.ini
1.disable_functions=eval,assert,popen,passthru,escapshllarg,escapeshellcmd,passthru,exec,systern,chroot,scandir,chgrp,chown,escapeshellcmd,escapshllarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,pro_close这些函数有什么用,可以到php官方文档上查找。
2.错误日志display_errors=On 会在浏览器页面提示一些错误,默认是off
去编辑一下vim /data/www/forum.php 特意去增加几行,在到浏览器访问www.test.com/forum.php就会看到提示的错误,可以根据提示看到配置文件哪里有问题;如果是off的话,再到浏览器访问就是空白页面,就不知道哪里有错误时,可以按F12查看到状态码,或者curl -x127.0.0.1:80 www.test.com/forum.php -I,500一般是php.ini脚本有问题;如果是On,别人会看到这些错误信息,对别人不友好,所以打开log_errors=On,再去定义错误日志的路径error_log=/usr/local/php/logs/php_errors.log,如果没有这个路径/usr/local/php/logs,就去mkdir /usr/local/php/logs/,并且更改权限chmod 777 /usr/local/php/logs/,再去配置日志的格式、日志的级别error_reporting=E_ALL & ~E_NOTICE,&表示并且,~表示取反,在到浏览器访问www.test.com/forum.php是空白页面,不过会在 /usr/local/php/logs/产生一个php_errors.log文件,可以cat php_errors.log里面的文件,可以看到发生的错误。
3.open_basedir=/data/www:/tmp 也是一个安全选项,如它只能访问/data/www目录,其它目录是访问不过去的,就把它限定死,可以是多个,所以说open_basedir一定要定义好在你的网站程序所在的目录,这样访问www.test.com/forum.php才能正常。
去配置Apache vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
如果有多个站点就要去配置Apache,因为php.ini只能写写一句,而Apache能配置多个open_basedir,每一个虚拟主机一个open_basedir。
加一句php_admin_value open_basedir "/data/www/:/tmp/",这样就不需要php.ini里面的open_basedir了,就把它注释掉,它的好处在于区分不同的虚拟主机
php扩展模块如何安装
/usr/local/php/bin/php -m (查看所加载的模块),如果你的模块没有加载进来,1.你要重新编译,2.你用动态加载进来
尝试动态共享的模块cd /usr/local/src/php-5.6.18/ext/,很多模块的源码在这个目录下,假如没有curl模块,cd curl,用这个命令/usr/local/php/bin/phpize,它的目的是为了生成configure可执行文件,ls 你会看到curl目录下多出很多文件,就去编译configure,./configure --with-php-config=/usr/local/php/bin/php-config这是固定的语法,如果有错误一般是少了什么库,make,make install会有这样一个文件 Installing shared extensions: /usr/local/php/lib/extensions/no-debug-non-zts-2016-2-21/,ls /usr/local/php/lib/extensions/no-debug-non-zts-2016-2-21/下面会有一个curl.so文件。
/usr/local/php/bin/php -i|grep extension_dir查extension_dir在哪,extension是存放这些扩展模块的,extension_dir可以在/usr/local/phpetc/php.ini里面定义,vim /usr/local/phpetc/php.ini找到extension,然后在最后加上extension=curl.so,如果写故意写错是加载不进来的,就可以去看它的错误日志tail /usr/local/php/logs/php_errors.log
grep '^extension=' /usr/local/phpetc/php.ini可以看到哪些是动态加载的,剩下的就是静态
取消高亮:nohl