6

我想要一个可用于服务器上所有 PHP 脚本的常量(一个字符串)。

根据http://php.net/manual/en/function.parse-ini-file.php如果你解析一个额外的 .ini 文件,这很容易,但是我不想解析一个额外的文件,我想要在全局 php.ini 中设置我的常量,而无需解析脚本中的任何内容。(事实上​​,这就是重点,因为我需要常量来查找要包含/解析/等的东西:当我知道这个额外的 .ini 文件在哪里时,我就不再需要它了!)

只是在 php.ini 中发明一个新常量,然后尝试使用 ini_get() 访问它是行不通的,还有其他方法吗?

我自己编译 Apache 和 PHP,所以我也可以在编译时设置常量和/或在必要时使用 Apache-constants。

4

3 回答 3

11

您可以在 PHP ini 中使用 PHPauto_prepend_file脚本来执行此操作,因为它将在您的任何用户级脚本之前运行:

指定在主文件之前自动解析的文件的名称。该文件被包含,就好像它是用 require 函数调用的一样,因此使用了 include_path。

所以你可以添加一个ini行,如:

auto_prepend_file="/home/user/script.php"

在 /home/user/script.php 中:

define('CONSTANT_NAME', 'your nice value here');

现在在您的 PHP 脚本中,您可以CONSTANT_NAME从任何您喜欢的地方访问,因为它在所有 PHP 脚本中都可用。

我在使用基于 mod_rewrite 的大规模虚拟主机的登台服务器上使用此技术,因此我可以为我的 PHP 脚本提供准确的文档根目录。我之前在一篇博文中讨论过这个问题。

于 2012-05-25T09:20:36.207 回答
1

简单的。创建一个文件 xxx.php,在其中定义常量并将该文件添加到 php.ini 中的全局include_path。我想补充一点,虽然不推荐保留这种全局常量或变量,因为您可能会忘记常量来自哪里,并且不会使您的应用程序对其他开发人员非常可移植和明确。

于 2012-05-25T09:23:48.830 回答
0

根据您所说的,我认为您会发现$_SERVER中已经有类似的东西可用,特别是“DOCUMENT_ROOT”。

于 2012-05-25T09:22:25.523 回答