PHP:可以在默认的php.ini文件中设置常量

时间:2012-05-25 09:17:44

标签: php apache

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

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

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

我自己编译Apache和PHP,所以我也可以在编译时设置常量和/或使用Apache常量(如果有必要的话)。

3 个答案:

答案 0 :(得分:7)

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

  

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

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

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

in /home/user/script.php:

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

现在,在PHP脚本中,您可以从所有PHP脚本中的任何位置访问CONSTANT_NAME

我在使用基于mod_rewrite的群发虚拟主机的登台服务器上使用此技术,因此我可以为我的PHP脚本提供准确的文档根目录。我在blog post before中讨论了这个问题。

答案 1 :(得分:0)

根据你的说法,我认为你会发现$_SERVER已经存在类似的东西,特别是'DOCUMENT_ROOT'。

答案 2 :(得分:0)

简单。创建一个文件xxx.php,在其中定义常量并将该文件添加到php.ini中的全局include_path。我想补充一点,保留这种全局常量或变量并不是推荐的工作方式,因为你可能会忘记来自常量的地方,并且不会使你的应用程序非常便携并且对其他开发人员显而易见。