2012-05-19 9 views
46

Sono passato dal mio vecchio apache a nginx e php 5.3.10. E quando ho cercato di modificare php.ini per soddisfare le mie esigenze, ho trovato ci sono 3 di loro:php.ini: quale?

$ locate php.ini 

/etc/php5/cgi/php.ini 
/etc/php5/cli/php.ini 
/etc/php5/fpm/php.ini 

Quale dovrei modificare?

+27

Chiedi 'phpinfo()' –

+0

come follow-up su Pekka: cerca nel tuo 'phpinfo()' per _Configuration File (php.ini) Path_ – Tim

+0

@Pekka Sono preoccupato che ogni php.ini funzionerà in un situazione diversa (cli, web, cgi veloce). – HappyDeveloper

risposta

59

In generale, il file cli/php.ini viene utilizzato quando il binario PHP viene chiamato dalla riga di comando.
È possibile verificare che sia in esecuzione php --ini dalla riga di comando.

fpm/php.ini verrà utilizzato quando PHP viene eseguito come FPM, come nel caso di un'installazione di nginx.
E puoi controllare quella chiamata phpinfo() da una pagina php servita dal tuo server web.

cgi/php.ini, nella vostra situazione, molto probabilmente non verrà utilizzato.


Utilizzando due distinte php.ini file (uno per CLI, e l'altro per servire le pagine dal vostro server web) è fatto abbastanza spesso, e ha uno vantaggi principali: esso consente di avere valori di configurazione diversi in ogni Astuccio.

Tipicamente, nel file php.ini che viene usato dal web-server, è necessario specificare un piuttosto breve max_execution_time: le pagine web dovrebbero essere serviti velocemente, e se una pagina ha bisogno di più di poche decine di secondi (30 secondi, per impostazione predefinita), probabilmente a causa di un bug e la generazione della pagina deve essere interrotta.
D'altra parte, è possibile avviare script piuttosto lunghi dal proprio crontab (o manualmente), il che significa che il file php.ini che verrà utilizzato è quello in cli/. Per quegli script, specifichi uno max_execution_time molto più lungo in cli/php.ini rispetto a quello che hai fatto in fpm/php.ini.

max_execution_time è un esempio comune; potresti fare lo stesso con molte altre direttive di configurazione, ovviamente.

+0

Ero dell'opinione che l'exe CLI di PHP ignorasse totalmente il max_execution_time, per ovvi motivi – RiggsFolly

3

Dipende molto dalla situazione, per me è in fpm perché sto usando PHP5-FPM. Una soluzione al problema potrebbe essere un php.ini universale e quindi utilizzando un collegamento simbolico creato come:

ln -s /etc/php5/php.ini php.ini 

Poi tutte le modifiche apportate saranno in un unico file .ini generale. Probabilmente questa non è la soluzione migliore, potresti voler modificare la configurazione in modo da utilizzare letteralmente un file, in un'unica posizione. Non ci sono più postazioni hackerate insieme.

+0

Non capisco il link. php5/php.ini non esiste, dovrei crearlo? – HappyDeveloper

+0

@HappyDeveloper scusa potrebbe essere semplicemente/etc/php/ –

+0

Ad ogni modo non posso impostare alcune opzioni come display_erros = On, sospetto che suhosin si assicuri di disattivarlo dopo che tutti i php.ini sono stati caricati. – HappyDeveloper

0

Anche se la risposta di Pascal era dettagliata e informativa che ha omesso di menzionare alcune informazioni chiave nel presupposto che tutti sanno come utilizzare phpinfo()

Per coloro che non lo fanno:

Passare alla cartella principale server web, quali come /var/www/

All'interno di questa cartella creare un file di testo chiamato info.php

Modificare il file e il tipo phpinfo()

Individuare il file come ad esempio: http://www.example.com/info.php

Qui potrete vedere il percorso php.ini sotto Loaded Configuration File:

phpinfo

0

È possibile individuare è il file php.ini utilizzato:

  • Per aggiungere phpinfo() in un php pag e e visualizzare la pagina (come l'immagine sotto)
  • Dalla shell, digitare: php -i

successivo, è possibile trovare le informazioni nel file di configurazione caricata (ecco che è/user/local/etc/php/php.ini)

a volte, hai indicato (nessuno), in questo caso, è sufficiente mettere il vostro php.ini personalizzato che potete trovare qui: http://git.php.net/?p=php-src.git;a=blob;f=php.ini-production;hb=HEAD

Spero che questo risponda r aiuterà.

Problemi correlati