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

问题描述 投票:0回答:4

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

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

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

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

php apache global-variables virtualhost
4个回答
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的更多详细信息


0
投票

我认为你应该尝试使用OS环境变量。尝试设置变量,然后将它们导出到.profile文件中。

理想情况下,这也是您应该存储敏感凭据的地方。这样,即使你的代码被泄露,也没有人可以访问你现有的服务器(永远不会在你的代码中存储数据库或其他凭据)

您可以将系统变量存储在.profile或.bashrc文件中(我建议使用.profile)。您可以在此处查看如何设置系统变量:https://unix.stackexchange.com/a/117470/209405

您可以在getenv($var)$_ENV[$var]的帮助下在PHP中获取变量。欲了解更多信息,您可以在这里查看:http://php.net/manual/en/function.getenv.phphttp://php.net/manual/en/reserved.variables.environment.php


0
投票

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

SetEnv MYLITTLEVAR thestringIwant

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

print $ _SERVER ['MYLITTLEVAR'];

经过测试,对我有用。


0
投票

如果想在PHP中全局提供一些变量,则需要在apache配置文件中添加这些变量。

如果你正在使用ubuntu open /etc/apache2/apache2.conf文件,并且如果你正在使用windows open httpd.conf。并添加以下行。

SetEnv VARIABLE_NAME'无论你想要什么价值'

© www.soinside.com 2019 - 2024. All rights reserved.