2011-04-22 83 views
3

我在FastCGI通信中使用PHP中的Apache HTTP Server v2.2。PHP的include_path - 將其設置爲空字符串不起作用

我試圖在php.ini編輯include_path變量爲空字符串,但它沒有工作, 路徑仍然存在:.:/usr/local/lib/php(通過的phpinfo所看到())。
如果我將包含路徑設置爲冒號(:),那麼包含路徑最終會改變。

如何將它設置爲空字符串?

謝謝。

+0

取消設置'include_path'會有效地禁用includes,除非您要在任何地方硬編碼您的應用程序的路徑。 – cHao 2011-04-22 08:45:06

+0

你爲什麼試圖將它留空? – sdolgy 2011-04-22 08:46:13

+0

@sdolgy:因爲每個用戶都被限制在一個特定的目錄下,所以不需要include_path。 – Dor 2011-04-22 11:28:23

回答

0

該值必須是除空字符串以外的內容。如果你不希望PHP在任何地方包含任何東西,你可以將它設置爲一些不存在的路徑(並且讓它在試圖包含東西時找不到路徑)。這不是一個理想的解決方案,但它會起作用。

雖然我有一種感覺,你正在討論這個錯誤。 include_path是非常有用的,除非你打算在任何地方硬編碼你的應用程序的路徑(這本身就是一個壞主意,國際海事組織)。如果你將它設置爲.,那應該足以擺脫不應該在那裏的路徑,同時保持對include東西的實用性。

+0

請看我對上面的'sdolgy'的回覆。使用PHP常量來幫助在我的應用中包含文件有什麼問題?這是一個正常的例程,發生在我看到的每個系統中(例如IPB,vBulletin)。無論如何,每個用戶都可以修改'include_path'值。我只是重置初始值的管理員。 – Dor 2011-04-22 11:31:58

+1

如果初始值不起作用,那麼應用程序的路徑常量沒有問題。 (理想情況下,應用程序不會將其路徑硬編碼 - 它可以在應用程序根目錄中使用'dirname(__ FILE __)'來查找路徑,但這是另一個主題。)初始值應該是合理和有用的,雖然。如果它以某種方式設置爲無,那麼每個應用程序 - 無論多麼微不足道 - 都需要設置其包含路徑或從根目錄指定完整路徑以包含任何內容。感覺像是「安全」與功能之間的不良平衡,尤其是如果您的真實安全性有效。 – cHao 2011-04-22 17:31:33

0

現在問題背後有更多的背景。這更是一個系統管理員的問題,但這裏的響應:

每個虛擬主機可以配置特定的php.ini設置:如果你https://serverfault.com/questions/34078/how-do-i-set-up-per-site-php-ini-files-on-a-lamp-server-using-namevirtualhosts

http://php.net/manual/en/configuration.changes.php

現在:

對於Apache沒有應用這個虛擬主機,它是每個用戶,我更確定這是可能的在用戶public_html配置下。

+0

謝謝,但PHP不是Apache的一個模塊。 – Dor 2011-04-22 13:31:49

+0

啊是的。抱歉.. – sdolgy 2011-05-03 08:35:44