原理:
任何對.php文件的請求,都簡單地交給php-cgi去處理,但沒有驗證該php文件是否存在。
PHP文件不存在,沒辦法返回普通的404錯誤,它返回 一個404,並帶上一句”No input file specified”
另外,還可能跟 路徑或者 權限有關系,或者SCRIPT_FILENAME 變量沒有被正確的設置(這在nginx是最常見的原因)。
解決辦法:
1 打開文件: 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 # chown -R www:www ./* # chmod -R 755 ./* # lnmp restart
當執行的時候。如果個別項目里邊有 .user.ini 文件。會提示
chown: changing ownership of ‘./www.test.com/.user.ini’: Operation not permitted
這時候需要 進入這個目錄 執行
chattr -i .user.ini
然后 進入到wwwroot目錄 , 再執行權限命令,最后別忘了,進入www.test.com 目錄,執行
chattr +i .user.ini
最后重啟
lnmp restart
搞定!
補充:Linux chattr 命令,用於改變文件屬性。
這項指令可改變存放在ext2文件系統上的文件或目錄屬性,這些屬性共有以下8種模式:
- a:讓文件或目錄僅供附加用途。
- b:不更新文件或目錄的最后存取時間。
- c:將文件或目錄壓縮后存放。
- d:將文件或目錄排除在傾倒操作之外。
- i:不得任意更動文件或目錄。
- s:保密性刪除文件或目錄。
- S:即時更新文件或目錄。
- u:預防以外刪除。
語法
chattr [-RV][-v<版本編號>][+/-/=<屬性>][文件或目錄...]
參數
- -R 遞歸處理,將指定目錄下的所有文件及子目錄一並處理。
- -v<版本編號> 設置文件或目錄版本。
- -V 顯示指令執行過程。
- +<屬性> 開啟文件或目錄的該項屬性。
- -<屬性> 關閉文件或目錄的該項屬性。
- =<屬性> 指定文件或目錄的該項屬性。
實例
用chattr命令防止系統中某個關鍵文件被修改:
chattr +i /etc/resolv.conf
lsattr /etc/resolv.conf
會顯示如下屬性
----i-------- /etc/resolv.conf
讓某個文件只能往里面追加數據,但不能刪除,適用於各種日志文件:
chattr +a /var/log/messages