LAMP架构搭建与优化(2.8-2.9)

2.8 php.ini配置文件详解php

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

vim  /usr/local/php/etc/php.iniapache

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官方文档上查找。(为了安全,禁止一些高风险的函数)vim

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才能正常。curl


同上也能够去配置Apache     vim  /usr/local/apache2/conf/extra/httpd-vhosts.confsocket

若是有多个站点就要去配置Apache,由于php.ini只能写写一句,而Apache能配置多个open_basedir,每个虚拟主机一个open_basedir。ide

加一句php_admin_value open_basedir "/data/www/:/tmp/",这样就不须要php.ini里面的open_basedir了,就把它注释掉,它的好处在于区分不一样的虚拟主机函数

wKioL1bJxWehhibXAADbmYB81Gc912.png




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

相关文章
相关标签/搜索