Можно ли использовать переменные среды в php.ini?

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

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

upload_tmp_dir = $SCRATCH_HOME/uploads 

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

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

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

Снимок экрана с php docs с URL-адресом и примечание о разрешении envvars в PHP.ini

Он ничего не говорит о том, какой синтаксис использовать, но он такой же, как и в файле конфигурации Apache, который использует синтаксис * nix. Например, если вы хотите, чтобы PHP использовал системный temp-каталог, вы должны использовать это:

 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"; ?> 

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

 PHP_admin_value upload_tmp_dir $SCRATCH_HOME/uploads 

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