有风塘主
发布于 2024-10-26 / 56 阅读
0
0

PHP-FPM+Nginx访问php文件AccessDenied错误

现象

centos8系统下,安装、配置并启动了php-fpm+nginx之后,部署php项目之后,访问目录下下index.html、xxx.html能访问成功,访问index.php、xxx.php都提示Access denied

PHP版本:7.4.19

NGINX版本:1.24.0

项目框架:ThinkPhp5

排查调试

1、index.html文件访问正常,说明nginx运行正常。能访问到目录,说明vhosts的配置也正常

PS:新版本的nginx,配置文件的目录结构已经变了,注意区分

2、新建一个最小化的项目,只有一个phpinfo.php文件,然后单独配置域名和nginx的hosts文件,测试访问新项目的phpinfo.php文件,正常显示。

说明php-fpm运行正常,nginx代理访问php-fpm的设置也正常。附上最小化的nginx-hosts配置:

server {
    listen       80;
    server_name  php.test.com;

    location ~ \.php$ {
        root           /alidata/www/php.test.com/public;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

最终问题答案

在项目的运行根目录下有个.user.ini文件,该文件是我应用框架自动生成的。

因为linux下的LL命令默认不会显示.开头的文件,所以容易被忽略。

要解决问题,有两种方式:

  • 删除 .user.ini 文件

  • .user.ini 文件内,需要包含:

# 设置php-fpm运行php时有权限访问的目录
open_basedir=/alidata/www/php.test.com/public/:/tmp/


评论