2017-01-10 84 views
0

我有大约150个网站,每个站点都在它自己的Apache虚拟主机上,在Ubuntu 16上运行php7。每个站点都在根目录下有一个config.php,其中包含常量:define ( 'MYVAR', '设为myVal');使php变量/常量可用于所有站点的所有脚本

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

我不想创建一个文件,它们将它链接到每个站点,这很麻烦。我想编辑Apache配置或编辑一个PHP配置某处有一个define()。

这是possibe?或者我卡住sym链接文件或编辑我所有的配置?

+1

你有没有搜过这个?检查[PHP:可能在默认的php.ini文件中设置常量](http://stackoverflow.com/questions/10751688/php-possible-to-set-constants-in-default-php-ini-file)和[用php.ini声明全局变量](http://stackoverflow.com/questions/5052558/declaring-global-variable-with-php-ini) – bansi

+0

[PHP:可能在php.ini文件中设置常量](http://stackoverflow.com/questions/10751688/php-possible-to-set-constants-in-default-php-ini-file) –

回答

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

我将如何在PHP中访问这些变量? –

+0

使用'getenv($ var)'。详情请见:http://php.net/manual/en/function.getenv.php –

0

正如在此链接指出; PHP: possible to set constants in default php.ini file

你不能仅仅在PHP文件中发明变量,你需要自动预先配置一个包含所有变量的配置文件。

忽略下面

你可以存储在你的php.ini文件中的一些全局变量。

单个的php.ini文件应该被所有的Apache虚拟主机使用。

如果您更新php.ini文件,并把一个变量,像

my_custom_var = ABC123 

然后你就可以与访问变量ini_get

echo ini_get('my_custom_var'); 

参见ini_get更多细节在http://php.net/manual/en/function.ini-get.php

0

的对我来说,最好的非侵入方式是确保mod_env已启用,然后我在启用conf的目录中添加了conf文件按照它

SETENV MYLITTLEVAR thestringIwant

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

打印$ _ SERVER [ 'MYLITTLEVAR'];

经过测试,它适用于我。