【问题标题】:Is it possible to use environment variables in php.ini?是否可以在 php.ini 中使用环境变量?
【发布时间】:2010-10-25 21:33:26
【问题描述】:

我不想在我的 php.ini 配置中硬连线某些路径,而是想使用在其他一些地方(例如我的 Apache 配置)共享的系统变量来配置它们。我进行了一些搜索,但找不到合适的关键字组合来发现是否有办法做到这一点。

有谁知道这是否可以做到?

upload_tmp_dir = $SCRATCH_HOME/uploads

现在 SCRATCH_HOME 可以在环境中导出为 /tmp 或 /var/scratch 或任何我想要的。

【问题讨论】:

    标签: php configuration environment-variables


    【解决方案1】:

    正式记录:https://www.php.net/manual/en/configuration.file.php#example-36

    在开始之前,我只想指定我的配置: 我使用的是 Windows 7-64 位、PHP 5.4.3、Apache HTTP Server 2.2.x,我设置了我的环境变量PHP_HOME=C:\tools\php-5.4.3(PHP 安装目录)。 我在我的httpd.conf 和php.ini 文件中使用该变量

    注意:为简洁起见,我将省略一些文字。

    在httpd.conf 文件中

    # For PHP 5 do something like this:
    LoadModule php5_module "${PHP_HOME}/php5apache2_2.dll"
    AddType application/x-httpd-php .php
    
    # configure the path to php.ini
    PHPIniDir "${PHP_HOME}"
    

    在php.ini 文件中

    ; Directory in which the loadable extensions (modules) reside.
    ; http://php.net/extension-dir
    ; extension_dir = "./"
    ; On windows:
    extension_dir = "${PHP_HOME}/ext"
    

    【讨论】:

    • 正确。当心 - 在您的环境变量中使用斜杠 (/),如果有空格,请始终使用双引号!
    【解决方案2】:

    补充 @Synetec 答案,如果您的变量是自定义 php.ini 变量(由您创建,而不是官方 PHP ini 指令),请使用 get_cfg_var()。例如:

    在 php.ini 中:custom_variable = "abcde"
    在任何 php 脚本中:get_cfg_var('custom_variable') 返回 abcde

    我在本地开发人员的一个小项目中使用它。当我通过php -S localhost:8000 -c php.ini(不在本地运行Apache 服务器)运行本地服务器时,调用一些配置常量是一个不错的选择。在生产中,这些常量在.htaccess 中设置。

    【讨论】:

      【解决方案3】:

      你可以使用它,而且它现在有据可查:

      https://www.php.net/manual/en/configuration.file.php#example-36

      【讨论】:

        【解决方案4】:

        根据PHP docs,确实可以在配置文件中使用环境变量。

        它没有说明使用什么语法,但它与使用 *nix 语法的 Apache 配置文件相同。因此,例如,如果您希望 PHP 使用系统临时目录,您可以使用:

        upload_tmp_dir = ${Temp}
        

        您可以使用以下脚本确认它是否处于活动状态:

        <?php
            echo "ini:  " . ini_get('upload_tmp_dir') . "\n";
            echo "env:  " . sys_get_temp_dir()        . "\n";
            echo "temp: " . getenv('temp')            . "\n";
            echo "tmp:  " . getenv('tmp')             . "\n";
        ?>
        

        【讨论】:

        • 是否可以设置一些默认值,如果环境。 var 没有像 ${Temp:&lt;default value&gt;} 那样设置 - ${...} 的可用语法是否在某处定义/记录?
        【解决方案5】:

        尝试通过Apache config files配置PHP:

        PHP_admin_value upload_tmp_dir $SCRATCH_HOME/uploads
        

        对我来说很好用。 (psst,您不能使用 .htaccess 更改 upload_tmp_dir)

        【讨论】:

          猜你喜欢
          • 2016-01-03
          • 2022-01-15
          • 1970-01-01
          • 2016-12-22
          • 2022-01-06
          • 2021-03-16
          • 2020-07-17
          • 1970-01-01
          • 2019-02-06
          相关资源
          最近更新 更多