2009-05-13 10 views
14

En lugar de cablear algunas rutas en mi configuración de php.ini, me gustaría configurarlas utilizando variables del sistema que se comparten en otros lugares, como mi configuración de Apache. He hecho algunas búsquedas y no he podido encontrar la combinación correcta de palabras clave para descubrir si hay una forma de hacerlo.¿Es posible usar variables de entorno en php.ini?

¿Alguien sabe si esto se puede hacer?

upload_tmp_dir = $SCRATCH_HOME/uploads 

Ahora SCRATCH_HOME se pueden exportar en el medio ambiente como/tmp o/var/cero o lo que quiera que sea.

Respuesta

16

Esta función no está bien documentada. Antes de comenzar, solo quiero especificar mis configuraciones: Uso Windows 7-64bit, PHP 5.4.3, Apache HTTP Server 2.2.x, configuré mi variable de entorno PHP_HOME=C:\tools\php-5.4.3 (directorio de instalación de PHP). Uso la variable en mi archivo httpd.conf y php.ini

Nota: Voy a omitir algunos textos para abreviar.

En el archivo 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}" 

En el archivo de 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

correcta. Cuidado: ¡use barras (/) en su envvar y siempre doble comillas en uso si hubiera espacios! – kbec

1

intente configurar PHP a través de Apache config files:

PHP_admin_value upload_tmp_dir $SCRATCH_HOME/uploads 

funciona bien para mí. (psst, no puede cambiar upload_tmp_dir usando .htaccess)

11

Según la PHP docs, medio ambiente-variables de hecho se puede utilizar en el archivo de configuración.

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

que no dice nada acerca de lo que la sintaxis para utilizar, pero es lo mismo que con el archivo de configuración de Apache que utiliza la sintaxis * nix. Así, por ejemplo, si desea utilizar PHP para la temp-directorio del sistema, puede utilizar esta:

upload_tmp_dir = ${Temp} 

Puede confirmar que está activo con la siguiente secuencia de comandos:

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