É possível usar variables ​​de ambiente no php.ini?

Em vez de fazer fiação em alguns caminhos na configuração do meu php.ini, gostaria de configurá-los usando variables ​​de sistema que são compartilhadas em alguns outros locais, como minha configuração do Apache. Eu fiz algumas pesquisas e não consegui encontrar a combinação certa de palavras-chave para descobrir se existe uma maneira de fazer isso.

Alguém sabe se isso pode ser feito?

upload_tmp_dir = $SCRATCH_HOME/uploads 

Agora, SCRATCH_HOME pode ser exportado no ambiente como / tmp ou / var / scratch ou o que quer que seja.

    Esse recurso não está bem documentado. Antes de começar, eu só quero especificar minhas configurações: estou usando Windows 7-64bit, PHP 5.4.3, Apache HTTP Server 2.2.x, estabeleci minha variável ambiental PHP_HOME=C:\tools\php-5.4.3 (diretório de instalação do PHP). Uso a variável no meu arquivo httpd.conf e php.ini

    Nota: vou omitir algum texto por brevidade.

    No arquivo 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}" 

    No arquivo php.ini

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

    De acordo com os documentos do PHP , as variables ​​de ambiente podem de fato ser usadas no arquivo de configuração.

    Captura de tela de php docs com URL e nota sobre envvars sendo permitidos em PHP.ini

    Não diz nada sobre a syntax a ser usada, mas é o mesmo que o arquivo de configuração do Apache que usa a syntax * nix. Então, por exemplo, se você quiser que o PHP use o diretório temporário do sistema, você usaria isso:

     upload_tmp_dir = ${Temp} 

    Você pode confirmar que está ativo com o seguinte 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"; ?> 

    Tente configurar PHP através de arquivos de configuração Apache :

     PHP_admin_value upload_tmp_dir $SCRATCH_HOME/uploads 

    Funciona bem para mim. (psst, você não pode alterar upload_tmp_dir usando .htaccess)