Можно ли использовать переменные среды в php.ini?
Вместо жесткой проводки некоторых путей в моей конфигурации php.ini я хотел бы настроить их с помощью системных переменных, которые будут использоваться в других местах, таких как моя конфигурация Apache. Я сделал некоторые поиски и не смог найти правильное сочетание ключевых слов, чтобы узнать, есть ли способ сделать это.
Кто-нибудь знает, можно ли это сделать?
upload_tmp_dir = $SCRATCH_HOME/uploads
Теперь SCRATCH_HOME можно экспортировать в среду как /tmp или/var/scratch или что бы я ни хотел.
Ответы
Ответ 1
Эта функция плохо документирована.
Прежде чем начать, я просто хочу указать свои конфигурации:
Я использую 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"
Ответ 2
В соответствии с PHP docs переменные среды действительно могут использоваться в файле конфигурации.
![Screenshot of php docs with URL and note about envvars being allowed in PHP.ini]()
Он ничего не говорит о том, какой синтаксис использовать, но он такой же, как и в файле конфигурации Apaches, который использует синтаксис * nix. Например, если вы хотите, чтобы PHP использовал системный temp-каталог, вы должны использовать это:
upload_tmp_dir = ${Temp}
Вы можете подтвердить, что он активен при следующем script:
<?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";
?>
Ответ 3
Попробуйте настроить PHP через файлы конфигурации Apache:
PHP_admin_value upload_tmp_dir $SCRATCH_HOME/uploads
Прекрасно работает для меня. (psst, вы не можете изменить upload_tmp_dir
с помощью .htaccess)