【问题标题】:Make php variable/constant available to all scripts ad all sites使 php 变量/常量可用于所有脚本广告所有网站
【发布时间】:2017-05-24 11:54:50
【问题描述】:

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

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

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

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

【问题讨论】:

标签: php apache global-variables virtualhost


【解决方案1】:

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

您不能只在 PHP 文件中发明变量,您需要自动添加一个定义了所有变量的配置文件。

忽略下方

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

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

如果您更新您的php.ini 文件并将变量放入like 中

my_custom_var = ABC123

然后你可以使用ini_get访问变量

echo ini_get('my_custom_var');

http://php.net/manual/en/function.ini-get.php查看有关ini_get的更多详细信息

【讨论】:

    【解决方案2】:

    我认为您应该尝试使用操作系统环境变量。 尝试设置变量,然后将它们导出到您的 .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

    【讨论】:

    • 如何在 php 中访问这些变量?
    【解决方案3】:

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

    SetEnv MYLITTLEVAR thestringIwant

    然后在php中我可以通过:

    打印 $_SERVER['MYLITTLEVAR'];

    经过测试,对我有用。

    【讨论】:

      【解决方案4】:

      如果想让一些变量在 PHP 中全局可用,你需要在 apache 配置文件中添加这些变量。

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

      SetEnv VARIABLE_NAME '你想要的任何值'

      【讨论】:

        猜你喜欢
        • 2015-12-04
        • 2014-12-02
        • 1970-01-01
        • 2021-08-19
        • 1970-01-01
        • 2016-12-24
        • 2011-07-21
        • 1970-01-01
        • 2011-07-03
        相关资源
        最近更新 更多