P粉6628028822023-08-21 16:05:34
如果您正在執行SELinux,您可能需要授予httpd讀取/home目錄的權限,請使用下列命令:
sudo setsebool httpd_read_user_content=1
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伺服器上的相對路徑和絕對路徑的差異,詳細解釋了這個問題,並包含了一些實際的解決方案。例如,當您從命令列執行腳本時,這樣一個方便的變數是不存在的。在這種情況下,可以使用一種稱為“單一入口”的技術來解決。您也可以參考上述文章了解更多細節。