我使用php.ini(在nginx上)存储PHP的数据库访问凭据,旨在从.php文件中获取此数据。
我想一次(仅)设置这些值的全局常量,并使所有脚本都可以访问它们。
我目前正在执行如下所示的操作,此脚本是数据库接口脚本的require_once()。它可以工作,但是在下一个请求或页面调用dbinterface脚本时,必须再次定义常量,可能是因为范围问题(我可以收集)。
除了使用APC之外,还有一些方法可以定义这些吗?
<?php
if( !configLoaded() )
loadConfig();
function loadConfig()
{
$vars = array("A","B","C");
foreach( $vars as $v )
define( $v, get_cfg_var( "ubaza.cfg.$v" ) );
}
function configLoaded() //returns false as soon as the caller script exits
{
return defined("A") && defined("B") && defined("C");
}
?>
答案 0 :(得分:4)
您还可以在htaccess中设置变量并在PHP中获取
SetEnv YOURVAR value
用PHP获取它:
print $_SERVER["YOURVAR"];
然而,因为你想拥有来自php.ini的值的常量 - 不确定你是否能够在php.ini的htaccess中设置它们
答案 1 :(得分:1)
每次运行脚本时都必须对常量进行定义,因为当脚本完成后,垃圾回收会清除它。
如果你需要确保每个脚本只定义一次常量,那么你正确地做到了 - 当前的方法是完全可以接受的。
但是,如果您想要定义一次常量而不再担心它们,永远 - 请查看hidef。
它允许您将常量放在.ini文件中,因此在执行任何脚本之前已经定义了它们。 巧合的是,它也是使用常量的最快方法,尽管它需要更多的RAM。
答案 2 :(得分:1)
在运行其他任何东西之前使用auto_prepend_file来运行脚本怎么样?
http://ie1.php.net/manual/en/ini.core.php#ini.auto-prepend-file
这样你可以编写一次脚本,然后在设置时,它将定义所有脚本 运行开始时的常量。