【问题标题】:PHP's include_path - set it to an empty string doesn't workPHP include_path - 将其设置为空字符串不起作用
【发布时间】:2011-04-22 08:41:26
【问题描述】:

我在 FastCGI 通信中有 Apache HTTP Server v2.2 和 PHP。

我尝试将php.ini 中的include_path 变量编辑为空字符串,但没有成功, 路径仍然:.:/usr/local/lib/php(如 phpinfo() 所示)。
如果我将包含路径设置为冒号 (:),则包含路径最终会更改。

如何将其设置为空字符串?

谢谢。

【问题讨论】:

  • 取消设置 include_path 将有效地禁用包含,除非您要在任何地方硬编码应用程序的路径。
  • 你为什么要清空它?
  • @sdolgy:因为每个用户都被限制在某个目录下,这使得include_path变得不必要了。

标签: php include-path


【解决方案1】:

该值必须是空字符串以外的内容。如果您不希望 PHP 从任何地方包含任何内容,您可以将其设置为某个不存在的路径(并让它在尝试包含内容时无法找到该路径)。这不是一个理想的解决方案,但它会起作用。

不过,我感觉你做错了。 include_path 非常有用,除非您打算在任何地方对应用程序的路径进行硬编码(这本身就是一个坏主意,IMO)。如果您将其设置为仅.,那应该足以摆脱不应该存在的路径,同时保持include 的实用性。

【讨论】:

  • 请看我上面对sdolgy的回复。使用 PHP 常量来帮助在我的应用程序中包含文件有什么问题?这是一个正常的例行程序,发生在我看到的每个系统中(例如 IPB、vBulletin)。无论如何,每个用户都可以修改include_path 值。我只是重置初始值的管理员。
  • 如果初始值不起作用,则应用程序的路径具有常量并没有错。 (理想情况下,应用程序不会硬编码其路径——它可以在应用程序根目录中使用dirname(__FILE__) 找到路径。但这是另一个主题。)不过,初始值应该是合理且有用的。如果它以某种方式设置为空,那么每个应用程序——无论多么微不足道——都需要设置其包含路径或指定从根目录开始的完整路径以包含任何内容。感觉“安全”与功能之间的平衡很差,尤其是如果您的真正安全有效。
【解决方案2】:

现在问题背后有更多的背景。这更像是一个系统管理员问题,但以下是回复:

您可以为每个虚拟主机配置特定的 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

现在,如果您不将其应用于虚拟主机,并且是针对每个用户的,那么我更确定这在用户 public_html 配置下是可能的。

【讨论】:

  • 谢谢,PHP 不是 Apache 的模块。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 2017-11-05
  • 2016-01-31
  • 2015-09-03
  • 2010-11-15
  • 1970-01-01
相关资源
最近更新 更多