P粉6836651062023-08-24 11:50:35
如果您正在執行 SELinux,您可能必須授予 httpd 權限才能從 /home 目錄讀取資料:
sudo setsebool httpd_read_user_content=1
P粉7275312372023-08-24 09:24:51
這其實不是一個與 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';
它可以在任何目錄中的任何檔案中運行!
更新:最終我寫了一篇文章,解釋了文件中的相對路徑和絕對路徑之間的差異系統和網絡伺服器上,詳細解釋了問題,並包含一些實用的解決方案。就像,當您從命令列運行腳本時,這樣一個方便的變數並不存在。在這種情況下,一種稱為「單一入口點」的技術可以解決這個問題。詳細內容您也可以參考上面的文章。