搜尋

首頁  >  問答  >  主體

"無法開啟所需文件,PHP遭遇致命錯誤"

<p>我從Apache得到以下錯誤:</p> <p><strong>[Sat Mar 19 23:10:50 2011] [warn] mod_fcgid: stderr: PHP致命錯誤:require_once() [function.require]:開啟'/common/configs/config_templates.inc. php'失敗(include_path='.:/usr/share/pear:/usr/share/php')在/home/viapi​​cs1/public_html/common/configs/config.inc.php的第158行</strong> </p> <p>我絕對不是Apache的專家,但是config.inc.php和config_templates.inc.php檔案都在那裡。我還嘗試導航到我放置在common/configs/目錄下的test.html頁面,所以我認為沒有權限問題。我還設定了config_templates.inc.php檔案的權限,給了所有人讀、寫、執行的權限。不確定該怎麼辦,我檢查了是否有/usr/share/php目錄,發現沒有,但當我使用yum安裝php時,它說已經是最新版本。有什麼建議嗎? </p>
P粉345302753P粉345302753463 天前531

全部回覆(2)我來回復

  • P粉662802882

    P粉6628028822023-08-21 16:05:34

    如果您正在執行SELinux,您可能需要授予httpd讀取/home目錄的權限,請使用下列命令:

    sudo setsebool httpd_read_user_content=1

    回覆
    0
  • P粉251903163

    P粉2519031632023-08-21 13:14:41

    這其實不是一個與Apache相關的問題,甚至不是一個與PHP相關的問題。要理解這個錯誤,您必須區分虛擬伺服器上的路徑和檔案系統中的路徑。

    require運算子用於檔案。但是像這樣的路徑

    /common/configs/config_templates.inc.php

    只存在於虛擬HTTP伺服器上,而在檔案系統中沒有這樣的路徑。正確的檔案系統路徑應該是

    /home/viapics1/public_html/common/configs/config_templates.inc.php

    其中

    /home/viapics1/public_html

    部分被稱為文件根目錄,它將虛擬世界與真實世界連結。幸運的是,Web伺服器通常在一個設定變數中擁有文件根目錄,並與PHP共用。所以如果你將你的程式碼改成像這樣

    require_once $_SERVER['DOCUMENT_ROOT'].'/common/configs/config_templates.inc.php';

    它將在任何目錄中的任何文件中工作!

    更新:最終我寫了一篇文章,解釋了檔案系統和Web伺服器上的相對路徑和絕對路徑的差異,詳細解釋了這個問題,並包含了一些實際的解決方案。例如,當您從命令列執行腳本時,這樣一個方便的變數是不存在的。在這種情況下,可以使用一種稱為“單一入口”的技術來解決。您也可以參考上述文章了解更多細節。

    回覆
    0
  • 取消回覆