2011-04-22 73 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