我在ubuntu 16上运行php7的自己的Apache虚拟主机上有大约150个网站。每个站点在根目录中都有一个config.php,其中包含常量:define(' MYVAR',&# 39;设为myVal&#39);
我想创建一个新的常量,我必须每2个月左右更新一次。我不想打开每个配置并进行编辑。如何让每个站点/虚拟主机都知道我要设置的常量。我希望随处可见,就像$ _SERVER [' REMOTE_ADDRESS'];是
我不想创建一个文件,将它们符号链接到每个站点,那太乱了。我想编辑apache配置或在某个地方编辑php配置以在其中包含define()。
这可能吗?还是我卡住sym链接文件或编辑我的所有配置?
答案 0 :(得分:3)
如果要使某些变量在PHP中全局可用,则需要在apache配置文件中添加这些变量。
(如果您使用的是ubuntu open /etc/apache2/apache2.conf
文件,并且如果您使用的是windows open httpd.conf
。并添加以下行。
SetEnv VARIABLE_NAME“您想要的任何值”
答案 1 :(得分:0)
我认为你应该尝试使用OS环境变量。 尝试设置变量,然后将它们导出到.profile文件中。
理想情况下,您应该在此处存储敏感凭据。这样,即使您的代码泄露,也没有人可以访问您现有的服务器(永远不会在您的代码中存储数据库或其他凭据)
您可以将系统变量存储在.profile或.bashrc文件中(我建议使用.profile)。您可以在此处查看如何设置系统变量:{{3}}
您可以在getenv($var)
或$_ENV[$var]
的帮助下在PHP中获取变量。有关详情,请点击此处查看:https://unix.stackexchange.com/a/117470/209405和http://php.net/manual/en/function.getenv.php
答案 2 :(得分:0)
正如此链接所指出的那样; PHP: possible to set constants in default php.ini file
您不能在PHP文件中创建变量,您需要自动添加一个包含所有变量的配置文件。
忽略
您可以在php.ini
文件中存储一些全局变量。
所有Apache虚拟主机都应该使用单个php.ini
文件。
如果您更新php.ini
文件并将变量放入
my_custom_var = ABC123
然后您可以使用ini_get
echo ini_get('my_custom_var');
查看有关ini_get的更多详情
答案 3 :(得分:0)
对我来说,最好的非侵入式方法是确保mod_env已启用然后我在启用conf的dir中添加了一个conf文件,其中包含以下内容
SetEnv MYLITTLEVAR thestringIwant
然后在php中我可以得到它:
打印$ _SERVER [' MYLITTLEVAR'];
经过测试,对我有用。