我希望有一个可用于服务器上所有PHP脚本的常量(字符串)。
根据http://php.net/manual/en/function.parse-ini-file.php,如果你解析一个额外的.ini文件,这很容易,但是我不想解析额外的文件,我想在全局php.ini中设置我的常量而不必解析脚本中的任何内容。 (事实上,这是重点,因为我需要常量才能找到包含/解析/等的东西:当我知道这个额外的.ini文件的位置时,我不再需要它了!)
只是在php.ini中发明一个新常量,然后尝试使用ini_get()来访问它不起作用,还有其他方法吗?
我自己编译Apache和PHP,所以我也可以在编译时设置常量和/或使用Apache常量(如果有必要的话)。
答案 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。我想补充一点,保留这种全局常量或变量并不是推荐的工作方式,因为你可能会忘记来自常量的地方,并且不会使你的应用程序非常便携并且对其他开发人员显而易见。