No input file specified问题修正

php文件在执行过程中,可能会遇到“No input file specified”的错误信息,从字面来看,是没有找到输入文件的意思,而背后真正的原因可能会各不相同,总结一下我曾经遇到的一些情况。

一、php文件确实不存在

比如,webroot下没有名为a.php的文件,然后访问以下路径:http://localhost/a.php 。

如果以命令行方式运行一个不存在的php文件,会收到类似的错误信息:

PS C:\dev\php\code\core> php a.php
Could not open input file: aa.php

二、文件属主造成的没有执行权限问题

一般在linux桌面开发的时候会遇到这个问题,php以www用户运行,php项目检出之后的权限为:darkmi:darkmi,此时php文件是没有执行权限的。解决方案是,把当前用户的附加组增加www,命令如下:

usermod -a -G www darkmi

三、php配置造成的没有执行权限问题

在php.ini和user.ini中有个配置项为open_basedir,该配置项会限制php对本地文件系统的访问,即把所有的文件操作都限制指定的目录下。如果open_basedir指定的目录没有当前的项目目录,就会出现No input file specified的错误。

.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 设置可被识别。

https://segmentfault.com/a/1190000011552335


此条目发表在lnmp分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据