本文介绍访问部署在ECS实例上的Web站点,提示“No input file specified”错误的问题描述、问题原因和解决方案。
问题描述
访问部署在ECS实例上的Web站点时,提示“No input file specified”错误,如图所示。
问题原因
该问题通常是Web服务器无法找到指定的PHP文件或脚本导致。无法找到PHP文件或脚本的可能原因如下:
Web站点目录下存在
.user.ini
隐藏配置文件,且该文件中的open_basedir
配置所指定的目录列表未包含该Web站点目录,导致Web服务器无法找到该文件。您需要添加正确的Web站点目录,具体操作,请参见在.user.ini隐藏配置文件中手动添加Web站点目录。Web站点配置文件中伪静态规则书写错误,导致Web服务器读取该文件失败。您需要修改Web站点配置文件中错误的规则,具体操作,请参见在Web站点的配置文件修改伪静态规则配置(Apache)。
Web站点配置文件中运行模式相关配置错误,导致Web服务器读取该文件失败。您需要修改Web站点配置文件指定PHP程序的运行模式,具体操作,请参见在Web站点配置文件指定PHP程序运行模式(IIS和Nginx)。
解决方案
在.user.ini
隐藏配置文件中手动添加Web站点目录
您需要检查Web站点目录下是否存在.user.ini
隐藏配置文件,如果存在,再检查该文件中的open_basedir
配置所指定的目录列表是否包含了该Web站点目录。如果未包含,您需要手动添加该Web站点目录。
以Web站点目录是/www/wwwroot/www.abc.com
为例,您需要确保.user.ini
文件中的open_basedir
指令包含该Web站点目录,即您需要将.user.ini
隐藏配置文件中的open_basedir
配置修改为open_basedir=/www/wwwroot/www.abc.com/:/tmp/
,配置示例如图所示。
在Web站点配置文件修改伪静态规则配置(Apache)
您需要检查Web站点目录下是否存在.htaccess
隐藏配置文件,如果存在,再检查该文件中的RewriteRule
规则是否书写正确。如果错误,您需要手动修改该规则。
以伪静态规则RewriteRule ^(.*)$ /index.php?/$1 [L]
中的index.php
缺少半角问号(?)为例,您需要修改该规则,操作步骤如下。
远程连接ECS实例。
具体操作,请参见连接方式概述。
打开
.htaccess
文件,在配置文件中找到RewriteRule
所在行,然后在index.php
参数后添加半角问号(?),修改后的配置如图所示。说明.htaccess
文件为Apache用户配置文件(伪静态),一般在当前网站的根目录下,具体路径以您的实际环境为准。RewriteRule ^(.*)$ /index.php?/$1 [L]
重新访问该网站。
如果成功访问该网站,则问题解决。
在Web站点配置文件指定PHP程序运行模式(IIS和Nginx)
您需要修改Web站点配置文件中运行模式相关的配置,来指定PHP程序的运行模式。本文介绍为IIS和Nginx指定PHP程序运行模式为CGI的操作步骤。
IIS配置
远程连接Windows实例。
具体操作,请参见连接方式概述。
修改
php.ini
文件。打开
php.ini
文件。说明后续操作以
php.ini
文件所在路径为C:\php\54
为例,php.ini
文件所在路径以您部署时选择的实际路径为准。注释代码。
找到
php.ini
文件的doc_root
字段所在行,然后在开头位置添加半角分号(;)来注释整行内容,注释后的代码示例如图所示。修改代码。
找到
php.ini
文件中的;cgi.force_redirect = 1
代码,然后删除该代码中的半角分号(;),再将参数值从1
修改为0
,即该代码被修改为cgi.force_redirect = 0
,修改后的代码示例如图所示。
重启IIS。
说明本文操作步骤以Windows Server 2012 R2数据中心版64位中文版为例,实际操作以您实际的操作系统为准。
在桌面左下角,单击图标,然后右上角的搜索框中输入
iisreset
。单击iisreset。
IIS重启程序运行完毕,则表示IIS重启成功。
重新访问该网站。
如果成功访问该网站,则问题解决。
Nginx配置
远程连接ECS实例。
具体操作,请参见连接方式概述。
打开
/etc/php5/cgi/php.ini
文件,检查配置并确保cgi.fix_pathinfo = 1
。说明php.ini文件所在路径以您部署时选择的实际路径为准。
打开
fastcgi.conf
配置文件,检查并确保文件中已保存如下配置。fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $document_root;
如果
fastcgi.conf
配置文件中代码配置错误,则您需要修改代码后保存配置,修改后的代码示例如图所示。执行如下命令,重启Nginx服务。
service nginx restart
重新访问该网站。
如果成功访问该网站,则问题解决。
如果以上方法都没有解决问题,可以尝试查看Web服务器的错误日志,了解具体的错误信息并进行排查。