Files

使用符號連結從根外部訪問路徑

  • July 18, 2016

我需要為我的 apache 配置添加一個外部路徑。(httpd)

所以,我在我的 httpd 根文件夾中創建了這個路徑的符號連結,路徑是:/var/log/httpd/(我想直接在我的項目中顯示日誌)

我可以通過我的瀏覽器輸入訪問所有路徑:http: //127.0.0.1/httpd/

但是當我嘗試從 php 文件訪問它時,php 會拋出一個錯誤:

程式碼:

function logInfo() {

$log_path = $_SERVER['DOCUMENT_ROOT'] . "/httpd/local.cmp-error_log";
$php_log = file_get_contents($log_path);

print_r ($php_log);

}

錯誤:

[Sun Jul 17 23:45:19.960292 2016] [:error] [pid 19451] [client 127.0.0.1:34718] PHP Warning:  file_get_contents(/home/txx/http/www/httpd/local.cmp-error_log): failed to open stream: Operation not permitted in /home/txx/http/www/base_home/config/sys.php on line 8

這裡的錯誤在哪裡?

基本思想是您不能訪問文件根目錄之外的文件。這就是文件根目錄的意義所在。有幾種保護措施可以防止 Apache 遵循根目錄之外的符號連結。您需要在包含連結的目錄中啟用FollowSymlinks,但如果您可以瀏覽文件,則表示已完成。

您還需要確保 PHP 不限於文件根目錄。請參閱此 Stack Overflow 問題:檢查php.ini不包含該open_basedir設置。另一個潛在的限制是 SELinux,如果你的機器已經被加固,那麼 PHP 可能會被限制在一些預定義的目錄中,特別是可能被禁止訪問主目錄。另請參閱訪問文件根目錄外的文件

如果您無法訪問 Web 根目錄之外的內容,或者如果您不想過多地削弱系統的安全性,則可以將文件放在 Web 根目錄下,而不是讓 Apache 和 PHP 在別處查找。to的綁定掛載在掛載處創建目錄視圖。您可以並且可能應該將視圖設為只讀。/var/log/httpd``/var/www/dangerous/logs``/var/log/httpd``/var/www/dangerous/logs

引用自:https://unix.stackexchange.com/questions/296515