Можно ли использовать переменные окружения в php.ini? - PullRequest
17 голосов
/ 13 мая 2009

Вместо того, чтобы жестко связывать некоторые пути в моей конфигурации php.ini, я хотел бы настроить их, используя системные переменные, которые совместно используются в некоторых других местах, таких как моя конфигурация Apache. Я провел некоторый поиск и не смог найти правильное сочетание ключевых слов, чтобы узнать, есть ли способ сделать это.

Кто-нибудь знает, можно ли это сделать?

upload_tmp_dir = $SCRATCH_HOME/uploads

Теперь SCRATCH_HOME можно экспортировать в среде как / tmp или / var / scratch или как я хочу.

Ответы [ 3 ]

18 голосов
/ 13 мая 2012

Эта функция плохо документирована. Прежде чем я начну, я просто хочу указать свои конфигурации: Я использую Windows 7-64bit, 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"
14 голосов
/ 26 августа 2013

Согласно PHP документам , переменные среды действительно могут использоваться в файле конфигурации.

Screenshot of php docs with URL and note about envvars being allowed in PHP.ini

В нем ничего не сказано о том, какой синтаксис использовать, но он такой же, как в конфигурационном файле Apache, который использует синтаксис * nix. Так, например, если вы хотите, чтобы 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";
?>
1 голос
/ 13 мая 2009

Попробуйте настроить PHP через Файлы конфигурации Apache :

PHP_admin_value upload_tmp_dir $SCRATCH_HOME/uploads

У меня отлично работает. (psst, вы не можете изменить upload_tmp_dir, используя .htaccess)

...