2009-07-31 2 views
13

Apache consente di impostare i valori php.ini per gli host virtuali con la direttiva php_value.Imposta php include_path da nginx

Il nginx ha qualcosa di simile? C'è un altro modo per impostare l'include_path su una base per sito?

risposta

24

Ora, è possibile fare in questo modo:

fastcgi_param PHP_VALUE "include_path=/my/include/path"; 

Maggiori informazioni qui: http://bugs.php.net/bug.php?id=51595

Utilizzando questa tecnica per impostare i valori di php, ho impostato correttamente diversi percorsi "error_log" per più host virtuali.

Grazie, PHP e NginX ragazzi!

+0

È fantastico! Molto meglio! –

+0

A partire da quale versione di PHP? – ColinM

+0

Questo non è un buon modo per andare. Ho fatto questo e cambiato in un vhost e ha aggiunto queste impostazioni a livello globale, rompendo completamente altri vhost. –

1

Sean, php_value e php_admin_value non funzionano con nginx. Questa è una limitazione di php-cgi e non di nginx.

È possibile aggirare il avviando più istanze di PHP e passando in un php.ini personalizzati in questo modo:

php-cgi -c /path/to/php.ini 

È anche possibile impostare il percorso di inclusione in modo esplicito nel codice PHP in questo modo:

$paths = array(
    PATH_PROJECT . 'lib/', 
    PATH_PROJECT . 'lib/Doctrine/lib', 
    PATH_PROJECT . 'application/doctrine/mappers/', 
    PATH_PROJECT . 'application/lib', 
    PATH_PROJECT . 'application/modules/', 
    PATH_PROJECT . 'lib/classes', 
    PATH_PROJECT . 'application/lib/reports/', 
    get_include_path() 
); 

set_include_path(implode(PATH_SEPARATOR, $paths)); 
unset($paths); 
+0

Grazie! Ho anche trovato questo link http://forum.slicehost.com/comments.php?DiscussionID=3087 - impostarlo usando php non è fattibile a causa del modo in cui il progetto è impostato (nessun front controller). –

+0

Sono passato alla nuova risposta –