原理:
任何对.php文件的请求,都简单地交给php-cgi去处理,但没有验证该php文件是否存在,PHP文件不存在,没办法返回普通的404错误,它返回 一个404,并带上一句”No input file specified”,另外,还可能跟 路径或者 权限有关系,或者SCRIPT_FILENAME 变量没有被正确的设置(这在nginx是最常见的原因)。
解决办法:
1、打开 php.ini 文件
vim /usr/local/php/etc/php.ini
把 cgi.fix_pathinfo=0 改为 cgi.fix_pathinfo=1
把 cgi.force_redirect=1 改为 cgi.force_redirect=0
2、修改文件权限
# cd /home/wwwroot #这里是自己的web 项目目录
# chown -R www:www ./*
# chmod -R 755 ./*
#lnmp restart #记得重启服务 最粗暴的重启方法 哈哈
如果项目里边有 .user.ini 文件,你就很头痛了 ,各种坑
如果重启服务后,访问项目出现下面错误,那说明 .user.ini 没有权限
chown: changing ownership of ‘./www.test.com/.user.ini’: Operation not permitted
这个时候 进入www.test.com 项目目录 执行
cd /home/wwwroot/www.test.com
chattr +i .user.ini
重启ngxin服务,下面是见证奇迹的时刻
/etc/init.d/nginx reload
项目就可以运行了
补充 .user.ini 文件说明
自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用 .htaccess 文件有同样效果。
除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别。
两个新的 INI 指令,user_ini.filename 和 user_ini.cache_ttl 控制着用户 INI 文件的使用。
user_ini.filename 设定了 PHP 会在每个目录下搜寻的文件名;如果设定为空字符串则 PHP 不会搜寻。默认值是 .user.ini。
user_ini.cache_ttl 控制着重新读取用户 INI 文件的间隔时间。默认是 300 秒(5 分钟)。
详情请参考:http://www.php.net/manual/zh/configuration.file.per-user.php
————————————————
版权声明:本文为CSDN博主「刘星麟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liuxl57805678/article/details/88306403
扫码关注旭宓科技服务号