2009-05-13 15 views
14

Piuttosto che cablare alcuni percorsi nella mia configurazione php.ini, mi piacerebbe configurarli usando le variabili di sistema che sono condivise in altri posti come la mia configurazione di Apache. Ho fatto qualche ricerca e non sono riuscito a trovare il giusto mix di parole chiave per scoprire se c'è un modo per farlo.È possibile utilizzare le variabili di ambiente in php.ini?

Qualcuno sa se questo può essere fatto?

upload_tmp_dir = $SCRATCH_HOME/uploads 

Ora SCRATCH_HOME possono essere esportati in un ambiente come/tmp o/var/zero o quello che voglio che sia.

risposta

16

Questa funzione non è ben documentata. Prima di iniziare, voglio solo specificare le mie configurazioni: Sto usando Windows 7-64bit, PHP 5.4.3, Apache HTTP Server 2.2.x, ho impostato la mia variabile ambientale PHP_HOME=C:\tools\php-5.4.3 (directory di installazione PHP). Io uso la variabile nel mio file httpd.conf e php.ini

Nota: tralascerò qualche testo per brevità.

Nel httpd.conf file di

# 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}" 

Nel php.ini file di

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

corretta. Attenzione: usa la barra (/) nel tuo envvar e sempre doublequote-in-use se ci sono spazi! – kbec

1

provare a configurare PHP tramite Apache config files:

PHP_admin_value upload_tmp_dir $SCRATCH_HOME/uploads 

funziona bene per me. (psst, non è possibile modificare upload_tmp_dir utilizzando .htaccess)

11

Secondo il PHP docs, ambiente-variabili può infatti essere utilizzato nel file di configurazione.

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

non dice nulla di ciò che la sintassi da usare, ma è lo stesso che con file di configurazione di Apache, che utilizza la sintassi * nix. Così, per esempio, se si vuole che PHP per utilizzare il temp-directory di sistema, si può usare questa:

upload_tmp_dir = ${Temp} 

È possibile confermare che è attivo con il seguente 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"; 
?> 
Problemi correlati