使php变量/常量可用于所有站点的所有脚本

时间:2017-01-10 04:44:09

标签: php apache global-variables virtualhost

我在ubuntu 16上运行php7的自己的Apache虚拟主机上有大约150个网站。每个站点在根目录中都有一个config.php,其中包含常量:define(' MYVAR',&# 39;设为myVal&#39);

我想创建一个新的常量,我必须每2个月左右更新一次。我不想打开每个配置并进行编辑。如何让每个站点/虚拟主机都知道我要设置的常量。我希望随处可见,就像$ _SERVER [' REMOTE_ADDRESS'];是

我不想创建一个文件,将它们符号链接到每个站点,那太乱了。我想编辑apache配置或在某个地方编辑php配置以在其中包含define()。

这可能吗?还是我卡住sym链接文件或编辑我的所有配置?

4 个答案:

答案 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/209405http://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');

http://php.net/manual/en/function.ini-get.php

查看有关ini_get的更多详情

答案 3 :(得分:0)

对我来说,最好的非侵入式方法是确保mod_env已启用然后我在启用conf的dir中添加了一个conf文件,其中包含以下内容

SetEnv MYLITTLEVAR thestringIwant

然后在php中我可以得到它:

打印$ _SERVER [' MYLITTLEVAR'];

经过测试,对我有用。