【LNMP】提示Nginx PHP “No input file specified”错误的解决办法

PHP 收藏 0 3832
苏东旭 VIP 2020-06-18 10:41:45

原理:

任何对.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

评论
  • 消灭零回复