2009-09-19 56 views
1

我試圖將php.ini中的open_basedir全局設置爲/ tmp /,以便我不需要記住在每個Apache虛擬主機指令中設置它。open_basedir全局

第二我在php.ini中設置它,所有腳本無法工作,因爲只允許讀取/ tmp /。這不可能嗎?文件不完全清楚,但它似乎應該工作。

+0

很確定這是更適用於服務器故障 - 它關於服務器的配置,而不是編程本身 - 投票移動它。 – gnarf 2009-09-19 01:34:57

+0

@gnarf:標記爲「belongs-on-serverfault」與投票結束不同。您有代表,請使用關閉鏈接。在meta上看到這篇文章:http://meta.stackexchange.com/questions/4128/change-the-belongs-on-serverfault-tag-when-a-question-is-moved-to-serverfault/4211#4211 – raven 2009-11-11 15:21:41

回答

4

open_basedir將影響您的能力include()require()以及fopen()。如果你想仍然能夠訪問虛擬用戶主目錄中的代碼,你需要額外的路徑添加到配置參數:

php_admin_value open_basedir /tmp/:/home/user 

This article對open_basedir的一些有用的信息。就個人而言 - 我認爲這是一件可以避免的事情,如果用戶有權查看您不想要的文件,則有更好的方法來限制訪問。事實上,PHP已經在5.3中棄用了安全模式,並且在PHP 6中刪除了它,這讓我內心更加快樂。

+0

就像旁註:open_basedir與safe_mode沒有關係,只有第二個將會在PHP 6中被刪除:open_basedir被認爲是一種高效的安全機制,將會保留下來。 – 2009-09-19 15:17:53

+0

請記住,在OS X上,/ private/var/tmp/as/tmp /將不起作用,並且這些不是真正的路徑,因此您需要一個尾部斜線。 php.ini最好設置爲/ path/to/www-docs /這將是你的全侷限制,讓人們遠離系統文件,然後在你的apache配置中進行深入研究。 – user170579 2009-09-23 23:50:28