访问部署在ECS实例上的Web站点,提示“No input file specified”错误,如何处理?

本文介绍访问部署在ECS实例上的Web站点,提示“No input file specified”错误的问题描述、问题原因和解决方案。

问题描述

访问部署在ECS实例上的Web站点时,提示“No input file specified”错误,如图所示。问题现象 xin

问题原因

该问题通常是Web服务器无法找到指定的PHP文件或脚本导致。无法找到PHP文件或脚本的可能原因如下:

解决方案

.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/ ,配置示例如图所示。image

在Web站点配置文件修改伪静态规则配置(Apache)

您需要检查Web站点目录下是否存在.htaccess隐藏配置文件,如果存在,再检查该文件中的RewriteRule规则是否书写正确。如果错误,您需要手动修改该规则。

以伪静态规则RewriteRule ^(.*)$ /index.php?/$1 [L]中的index.php缺少半角问号(?)为例,您需要修改该规则,操作步骤如下。

  1. 远程连接ECS实例。

    具体操作,请参见连接方式概述

  2. 打开.htaccess文件,在配置文件中找到RewriteRule所在行,然后在index.php参数后添加半角问号(?),修改后的配置如图所示。

    说明

    .htaccess文件为Apache用户配置文件(伪静态),一般在当前网站的根目录下,具体路径以您的实际环境为准。

    RewriteRule ^(.*)$ /index.php?/$1 [L]
    Apache 修改
  3. 重新访问该网站。

    如果成功访问该网站,则问题解决。

在Web站点配置文件指定PHP程序运行模式(IIS和Nginx

您需要修改Web站点配置文件中运行模式相关的配置,来指定PHP程序的运行模式。本文介绍为IIS和Nginx指定PHP程序运行模式为CGI的操作步骤。

IIS配置

  1. 远程连接Windows实例。

    具体操作,请参见连接方式概述

  2. 修改php.ini文件。

    1. 打开php.ini文件。

      说明

      后续操作以php.ini文件所在路径为C:\php\54为例,php.ini文件所在路径以您部署时选择的实际路径为准。

    2. 注释代码。

      找到php.ini文件的doc_root字段所在行,然后在开头位置添加半角分号(;)来注释整行内容,注释后的代码示例如图所示。注释doc_root所在行

    3. 修改代码。

      找到php.ini文件中的;cgi.force_redirect = 1代码,然后删除该代码中的半角分号(;),再将参数值从1修改为0,即该代码被修改为cgi.force_redirect = 0,修改后的代码示例如图所示。修改cgi

  3. 重启IIS。

    说明

    本文操作步骤以Windows Server 2012 R2数据中心版64位中文版为例,实际操作以您实际的操作系统为准。

    1. 在桌面左下角,单击开始图标图标,然后右上角的搜索框中输入iisreset重启IIS

    2. 单击iisreset

      IIS重启程序运行完毕,则表示IIS重启成功。

  4. 重新访问该网站。

    如果成功访问该网站,则问题解决。

Nginx配置

  1. 远程连接ECS实例。

    具体操作,请参见连接方式概述

  2. 打开/etc/php5/cgi/php.ini文件,检查配置并确保cgi.fix_pathinfo = 1

    说明

    php.ini文件所在路径以您部署时选择的实际路径为准。

    Nginx cgi
  3. 打开fastcgi.conf配置文件,检查并确保文件中已保存如下配置。

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param DOCUMENT_ROOT $document_root;

    如果fastcgi.conf配置文件中代码配置错误,则您需要修改代码后保存配置,修改后的代码示例如图所示。Nginx fastcgi

  4. 执行如下命令,重启Nginx服务。

    service nginx restart
  5. 重新访问该网站。

    如果成功访问该网站,则问题解决。

如果以上方法都没有解决问题,可以尝试查看Web服务器的错误日志,了解具体的错误信息并进行排查。