Press "Enter" to skip to content

php项目部署之后 出现 Access denied情况

在同一台服务器部署不同php框架项目,偶尔会出现Access denied 情况,提示访问被拒绝,调试单独php比如

a.php 里面具体内容

<?php

phpinfo();

?>

a.php能正常访问,但是访问框架文件 就访问不了 ,然后看具体nginx 日志数据 提示

*91 FastCGI sent in stderr: “Access to the script ‘/data/web/xxx/public’ has been denied (see security.limit_extensions)” while reading response header from upstream,

没有路径访问权限,之前有遇到这种情况跨文件夹访问在fastcgi里面设置


fastcgi_param PHP_ADMIN_VALUE “open_basedir=/data/web/xxx/:/tmp/:/pro
c/”;

重启nginx 之后可以解决,因为php目录安全问题,框架设置设置nginx 配置 root 路径指向 public 文件夹,但其实public 需要加载外面的框架类文件导致这个异常 上面这个解决方案 不是很好,如果多个项目每次都需要修改 fastcgi 配置

php提供了 https://www.php.net/manual/zh/configuration.file.per-user.php 配置文件 .user.ini 文件

首先,要使.user.ini生效,要设置php.ini 中的
user_ini.filename= ".user.ini"
user_ini.cache_ttl = 300

  关于这两个配置的意义,请看php手册 http://php.net/manual/zh/configuration.file.per-user.php

注释掉 fastcgi.conf 中的 open_basedir  的配置。

跨目录

/home/wwwroot/public/.user.ini

open_basedir=/home/wwwroot:/tmp/:/proc/

设置跨目录 在public 文件下面设置

就可以了

Leave a Reply

Your email address will not be published. Required fields are marked *