2.8 php.ini配置文件详解

/usr/local/php/bin/php  -i |head可以查看到调用的php.ini配置文件在哪里,它是以分号为注释符号,常用的配置有

vim  /usr/local/php/etc/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,别人会看到这些错误信息,对别人不友好,所以打开php的错误日志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,&表示并且,~表示取反,重启Apache,在到浏览器访问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了,就把它注释掉,它的好处在于区分不同的虚拟主机

LAMP架构搭建与优化(2.8-2.9)_配置文件




2.9 php扩展模块如何安装

/usr/local/php/bin/php -m (查看所加载的模块,有动态也有静态),假如你安装完php,你想要的模块没有加载进来,解决办法:第一种方法是重新编译,第二种方法是用动态方式加载进来

尝试动态共享的模块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/php/etc/php.ini里面定义,vim /usr/local/php/etc/php.ini找到extension,然后在最后加上extension=curl.so,如果写故意写错是加载不进来的,就可以去看它的错误日志tail   /usr/local/php/logs/php_errors.log

grep  '^extension='   /usr/local/php/etc/php.ini可以看到哪些是动态加载的,剩下的就是静态


取消高亮:nohl