2009-05-13 4 views
14

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

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

upload_tmp_dir = $SCRATCH_HOME/uploads 

Теперь SCRATCH_HOME могут быть экспортированы в окружающую среду в/TMP или/вар/царапины или то, что я хочу, чтобы это было.

ответ

16

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

Correct. Остерегайтесь - используйте слэш (/) в вашем envvar и всегда используйте doublequote-in-use, если бы были пробелы! – kbec

1

Try настройки PHP с помощью Apache config files:

PHP_admin_value upload_tmp_dir $SCRATCH_HOME/uploads 

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

11

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

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

Он ничего не знает о какой синтаксис использовать не сказать, но это так же, как с файлом конфигурации 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"; 
?> 
Смежные вопросы