nginx 怎么运行php,nginx 配置正确但无法正确执行php脚本[解决步骤]

本文介绍了在LNMP环境中遇到PHP脚本无法执行的问题及解决思路。通过开启各种日志,定位到问题在于.open_basedir.限制。在网站根目录下发现隐藏的.user.ini文件导致该限制,删除该文件并解决权限问题后,问题得以解决。此过程涉及了Nginx、PHP-FPM配置和文件权限等知识。
摘要由CSDN通过智能技术生成

问题描述

最近接手了一台别人配好的lnmp环境, php脚本不执行.

解决问题的思路

在开发环境下, 最好打开所有调试功能

如(nginx的access log;nginx的error log;php的error log;php-fpm的log)

下面是部分配置

php.ini

display_errors = On 这里打开后, 页面上就不会只显示500错误, 而是会提示具体的错误信息

log_errors = On //开启php的错误日志, 错误日志有助于定位问题

error_log = /var/log/php-error.log //设置错误日志的存放位置

php-fpm.conf

error_log = /var/log/php-fpm.log //顺手看看fpm的日志存放位置

可以多个终端, 通过 tail -f 文件名 来实时查看最新的日志信息

考虑以下几种可能

nginx 配置fastcgi出错 [X]

目录权限问题 调的时候将网站根目录权限暴力的设为__777__(偷懒, 不推荐, 注意安全) [X]

fpm的问题 新建了一个虚拟网站, 发现能够正确执行php脚本 [X]

php配置文件加载不正确 php -i | grep "Loaded Configuration File" 经排查没错 [X]

以上情况都排除后, 从nginx的错误日志里看到如下提示

FastCGI sent in stderr: "PHP message: PHP Warning: Unknown: open_basedir restriction in effect. File(xxx.php) is not within the allowed path(s): (xxxxx) in Unknown on line 0

这里的关键是**open_basedir ** 但是在php.ini里没有发现设置过相关内容

经过查找

除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。原文链接

在网站根目录下 ll -a 果然发现了一个隐藏文件**.user.ini**

发现以后首先就想到把它删除

rm -rf .user.ini //Operation not permitted 删 除 不 掉

正确的步骤是在删除之前先执行

chattr -i .user.ini

删除该文件以后问题成功解决.

下面再看看这个文件里是个什么玩意儿

open_basedir=/sdfasf/:/tmp/:/proc/

将 PHP 所能打开的文件限制在指定的目录树,包括文件本身。本指令不受安全模式打开或者关闭的影响。open_basedir 功能链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值