如果您正在運行 SELinux,您可能必須授予 httpd 權(quán)限才能從 /home 目錄讀取數(shù)據(jù):
sudo setsebool httpd_read_user_content=1
這實際上不是一個與 Apache 相關(guān)的問題。甚至沒有 PHP 相關(guān)的。 要理解此錯誤,您必須區(qū)分虛擬服務(wù)器上的路徑和文件系統(tǒng)中的路徑。
require
運算符適用于文件。但這樣的路徑
/common/configs/config_templates.inc.php
僅存在于虛擬HTTP服務(wù)器上,而文件系統(tǒng)中不存在該路徑。正確的文件系統(tǒng)路徑是
/home/viapics1/public_html/common/configs/config_templates.inc.php
哪里
/home/viapics1/public_html
部分稱為文檔根,它將虛擬世界與現(xiàn)實世界連接起來。幸運的是,Web 服務(wù)器通常將文檔根放在與 PHP 共享的配置變量中。因此,如果您將代碼更改為這樣的內(nèi)容
require_once $_SERVER['DOCUMENT_ROOT'].'/common/configs/config_templates.inc.php';
它可以在任何目錄中的任何文件中運行!
更新:最終我寫了一篇文章,解釋了文件中的相對路徑和絕對路徑之間的差異系統(tǒng)和網(wǎng)絡(luò)服務(wù)器上,詳細(xì)解釋了問題,并包含一些實用的解決方案。就像,當(dāng)您從命令行運行腳本時,這樣一個方便的變量并不存在。在這種情況下,一種稱為“單一入口點”的技術(shù)可以解決這個問題。詳細(xì)內(nèi)容您也可以參考上面的文章。