Durante un tutorial Zend , mi sono imbattuto nella seguente affermazione:
Nota che le impostazioni di php_flag in .htaccess funzionano solo se stai usando mod_php.
Qualcuno può spiegare cosa significa?
Durante un tutorial Zend , mi sono imbattuto nella seguente affermazione:
Nota che le impostazioni di php_flag in .htaccess funzionano solo se stai usando mod_php.
Qualcuno può spiegare cosa significa?
Risposte:
mod_php
significa PHP, come un modulo Apache .
Fondamentalmente, quando si carica mod_php
come modulo Apache, consente ad Apache di interpretare i file PHP (quelli sono interpretati da mod_php
) .
EDIT: Ci sono (almeno) due modi per eseguire PHP, quando si lavora con Apache:
mod_php
) : l'interprete PHP viene quindi "incorporato" nel processo Apache: non esiste un processo PHP esterno, il che significa che Apache e PHP possono comunicare meglio.
E ri-modifica, dopo il commento : usando CGI o mod_php
dipende da te: è solo questione di configurazione del tuo server web.
Per sapere in che modo è attualmente utilizzato sul tuo server, puoi controllare l'output di phpinfo()
: dovrebbe esserci qualcosa che indica se PHP è in esecuzione tramite mod_php
(o mod_php5
) o tramite CGI.
Potresti anche dare un'occhiata alla php_sapi_name()
funzione: restituisce il tipo di interfaccia tra server web e PHP .
Se controlli i file di configurazione di Apache, quando lo usi mod_php
, dovrebbe esserci una LoadModule
riga simile a questa:
LoadModule php5_module modules/libphp5.so
(Il nome del file, a destra, può essere diverso: su Windows, ad esempio, dovrebbe essere a .dll
)
mod_php
è di gran lunga la configurazione più comune.
mod_php
non è vero PHP; è solo un componente aggiuntivo di Apache. O meglio, penso che dovresti iniziare la risposta con una definizione di cosa significa esattamente PHP?
Questa risposta è presa da TuxRadar :
Quando si esegue PHP tramite il server Web, sono disponibili due opzioni distinte: eseguirlo utilizzando CGI SAPI di PHP o eseguirlo come modulo per il server Web. Ognuno ha i propri vantaggi, ma, nel complesso, il modulo è generalmente preferito.
Eseguire PHP come CGI significa che in pratica comunichi al tuo server web la posizione del file eseguibile PHP, e il server esegue quell'eseguibile, dandogli lo script che hai chiamato, ogni volta che visiti una pagina. Ciò significa che ogni volta che carichi una pagina, PHP deve leggere php.ini e impostare le sue impostazioni, deve caricare tutte le sue estensioni e quindi deve iniziare a lavorare per analizzare lo script: c'è molto lavoro ripetuto.
Quando esegui PHP come modulo, PHP si trova letteralmente all'interno del tuo server web: si avvia solo una volta, carica le sue impostazioni e le estensioni solo una volta e può anche memorizzare informazioni tra le sessioni. Ad esempio, gli acceleratori PHP si basano sul fatto che PHP sia in grado di salvare i dati memorizzati nella cache tra le richieste, cosa impossibile utilizzando la versione CGI.
L'ovvio vantaggio di usare PHP come modulo è la velocità: vedrai un grande aumento della velocità se converti da CGI a un modulo. Molte persone, in particolare gli utenti Windows, non se ne rendono conto e continuano a utilizzare php.exe CGI SAPI, il che è un peccato: il modulo è solitamente da tre a cinque volte più veloce.
C'è un vantaggio chiave nell'usare la versione CGI, però, ed è che PHP legge le sue impostazioni ogni volta che carichi una pagina. Con PHP in esecuzione come modulo, qualsiasi modifica apportata al file php.ini non viene avviata fino a quando non si riavvia il server Web, il che rende la versione CGI preferibile se si stanno testando molte nuove impostazioni e si desidera vedere risposte immediate.
Il tuo server deve avere i moduli php installati in modo che possa analizzare il codice php.
Se sei su Ubuntu puoi farlo facilmente con
sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install libapache2-mod-php5
sudo /etc/init.d/apache2 restart
Altrimenti puoi compilare apache con php: http://dan.drydog.com/apache2php.html
Specificare il sistema operativo del server aiuterà gli altri a rispondere in modo più specifico.
Significa che devi avere PHP installato come modulo in Apache, invece di avviarlo come script CGI.
Solo per aggiungere queste risposte è che, mod_php è il metodo più vecchio e più lento disponibile nel server HTTPD per utilizzare PHP. Non è consigliato, a meno che tu non stia eseguendo vecchie versioni di Apache HTTPD e PHP. php-fpm e proxy_cgi sono i metodi preferiti.