2011-12-08 36 views
0

如上所述,當symlink鏈接到httpdocs目錄之外的php文件Apache/php提供一個空文件時。但是,如果我將擴展名更改爲html,則文件將作爲html文檔正確提供。這導致我相信它不是一個權限錯誤,但可能是與PHP配置(可能open_basedir導致這個?)或Apache有關的東西。當symlinking鏈接到httpdocs之外的php腳本時,Apache提供空文件

有誰知道什麼可能會導致此行爲?

編輯:任何人想知道這個,問題是由PHP的open_basedir限制造成的。

+0

網絡服務器對php文件有執行權限嗎? – jessica

+0

是的,服務器實際上是服務頁面,而不是拋出一個403 – Steven

+0

@jessica PHP文件不需要是可執行的,因爲PHP正在運行他們,而不是操作系統 – Brian

回答

1

打開PHP中的錯誤報告並檢查您的PHP錯誤日誌。 100%保證你有一個致命的腳本或配置錯誤。

+0

事情是完全相同的腳本從/ httpdocs文件夾工作。錯誤報告已打開,並且在日誌中看不到任何內容 – Steven

+0

使用E_ALL級別?另外,我看到了PHP無法寫入其日誌文件的框。另一種可能性是加載的配置不是您期望的配置。 – Kenaniah

+0

是的,什麼配置選項可能導致這種情況?有沒有在php/apache配置中可以禁止執行php腳本以外的httpdocs目錄? – Steven

0

我測試了webroot/htdocs中的一個PHP腳本的符號鏈接。工作得很好。

提出了以下文件

/some/directory/myphpscript.php  (the script) 
/some/directory/htdocs/symlink.php (webroot) 

在我加了一個Hello World腳本(<?php echo 'Hello world'; ?>)的myphpscript.php。符號鏈接站在在使用後續命令在命令行創建/一些/目錄/ htdocs中/:

ln -s ../myphpscript.php symlink.php 

確保

  • 用戶運行Apache可以訪問該文件
  • 的符號鏈接正確。如果您使用相對路徑,則必須相對於webroot(例如../../path/to/script.php)。通過打開文件來測試鏈接(例如nano symlink.php)。

查看Apache error.log以獲取錯誤消息。

+0

鏈接已正確創建。該文件被加載並且不會拋出404,並且相同的鏈接對於相同位置中的html文件起作用。 – Steven

+0

符號鏈接的名稱是什麼? something.php? something.html? – HNygard

相關問題