我们并不知道 php.ini 所在路径,这时候就需要通过 命令来查一查在哪里。
/usr/local/php/bin/php -i |head
php.ini 中常用的配置有如下:
( 1) 配置 disable_function
disable_functions = eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chg
rp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsock
open,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,p
roc_close
说明:在 php 中有非常多的函数,在这些函数中有一些是不太安全的,所以有必要把它们禁掉。像 exec, shell_exec 都是在 php 代码中执行 linux shell 命令,很危险,要禁掉。
( 2)配置 error_log
作为一个运维人员我们理应学会简单的 php 错误排查技能,其实 php 的错误跟 linux 下其他服务都是一样的,遇
到错误后要查看错误日志,根据报错信息来判断错误的原因。那如何查看 php 的错误信息呢?
第一种情况,可以直接把错误信息显示在浏览器中,配置方法是,在 php.ini 中找到 display_error=on,重启apache 服务后,刷新网页,发现不再是白页,而是具体的错误。这样我们就可以根据错误来调试 php 代码了。这种情况适合临时调试,但是这种情况不适合长期配置,因为所有错误都会显示在浏览器上,假如哪天 php 程序员不小心写错一段代码,而且没测试直接上传到服务器上了,那么我们的用户就会直接看到这些错误,这样是不合适的。
第二种情况,把错误信息输出到一个日志文件中,具体配置如下:
在 /usr/local/php/etc/php.ini 加入或者更改 :
display_error=off 把错误不再浏览器显示
log_errors=on 打开错误日志开关
error_log=/usr/local/php/logs/error.log指定错误日志的路径,为了避免权限问题不能自动生成该文件,我们可以先创建该文件,并且修改权限为 777
error_reporting = E_ALL | E_STRICT 定义错误日志的级别
配置完成后记得要重启 apache 服务,才会生效。
( 3)配置 open_basedir
在 php 中是有这个 open_basedir 概念的,它的意思是,把执行 php 的用户限定在指定的 路径下,这样通过权限缩小的方式达到安全目的。作为一个网站,其实我们只需要让 php 用户访问到网站的代码即可,没有必要让它去访问其他目录。那如何配置呢?
在 /usr/local/php/etc/php.ini 中加入或者更改
open_basedir = /dir1/:/dir2
说明: /dir1 和/dir2 为我们允许 php 可以访问的两个目录,同样也可以是多个,目录之 间用:分隔。一旦限定后,如果 php 试图去访问除/dir1 和/dir2 外的目录下的文件时,就会报错了。
除了在 php.ini 中定义 open_basedir 外,其实我们还可以在 apache 的配置文件中定义,因为一个 apache 下可能有多个站点,我们要针对不同的站点限定不同的 open_basedir,配置如下:
# vim httpd.conf 或者虚拟主机配置文件,加入
php_admin_value open_basedir "/dir1/:/dir2/"
原文链接:https://blog.csdn.net/weixin_34670892/article/details/115939388?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522d9d4687862afb79fe27910c86aef16ef%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=d9d4687862afb79fe27910c86aef16ef&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-12-115939388-null-null.nonecase&utm_term=%E7%BB%BF%E8%81%94nas