本文介紹訪問部署在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服務器的錯誤日志,了解具體的錯誤信息并進行排查。