现象
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/