Server-Apache

Questa sezione contiene note e suggerimenti specifici dell'installazione di PHP con server Apache, sia per le versioni Unix sia per le versioni Windows. Esiste, inoltre, una pagina separata per le istruzioni e note su Apache 2.

Dettagli sull'installazione di PHP con Apache su Unix

Si possono selezionare gli argomenti da aggiungere al comando configure di linea 10 dalla Lista completa delle opzioni di configurazione. In queste note viene omesso il numero di versione per evitare di avere istruzioni non corrette. Nella realtà occorre sostituire 'xxx' con i valori di versione corretti.

Esempio 3-4. Istruzioni per l'installazione (versione di Apache con modulo condiviso) di PHP 4.

1.  gunzip apache_xxx.tar.gz
2.  tar -xvf apache_xxx.tar
3.  gunzip php-xxx.tar.gz
4.  tar -xvf php-xxx.tar
5.  cd apache_xxx
6.  ./configure --prefix=/www --enable-module=so
7.  make
8.  make install
9.  cd ../php-xxx
10. Ora configuriamo il PHP. In questa fase si personalizza il PHP
    agendo sulle varie opzioni, tipo quali estensioni abilitare, Eseguire
    ./configure --help per avere una lista delle opzioni disponibili. Nell'esempio seguente si illustra 
    una semplice configurazione per il supporto di Apache 1 e MySQL. Il percorso a
    apxs nella vostra installazione può differire rispetto all'esempio.

    ./configure --with-mysql --with-apxs=/www/bin/apxs
10. ./configure --with-mysql --with-apxs=/www/bin/apxs
11. make
12. make install

  Se si decide di cambiare le opzioni di configurazione dopo l'installazione
  occorre ripere gli ultimi tre passi. Per attivare il nuovo modulo occorre
  riavviare Apache. Non è richiesta la ricompila di Apache.

  Nota: a meno di non avere dato indicazioni differenti, 'make install' installa anche PEAR,
  vari tools PHP tipo phpize e PHP CLI.

13. Configurazione del php.ini:
 
   cp php.ini-dist /usr/local/lib/php.ini

  Si può modificare il file .ini per impostare le opzioni di PHP.
  Se si desidera avere questo file in un'altra directory, utilizzare
  --with-config-file-path=/percorso al punto 10.

  Se si preferisce utilizzare php.ini-recommended, verificare l'elenco delle differenze rispetto 
  al php.ini e come queste influiscano sul comportamento del PHP.

14.  Modificare httpd.conf per caricare il modulo PHP.
     Il percorso nel lato destro dell'struzione LoadModule deve puntare  al percorso
     del modulo PHP nel sistema. Make install potrebbe averlo già aggiunto, 
     verificare per sicurezza.
  
     Con PHP 4:
       LoadModule php4_module libexec/libphp4.so

     Con PHP 45
       LoadModule php5_module libexec/libphp5.so

15. Nella sezione AddModule di httpd.conf, aggiungere sotto
    ClearModuleList:

    For PHP 4:  
      AddModule mod_php4.c
 
    For PHP 5: 
       AddModule mod_php5.c

16. Indicare ad Apache to considerare alcune estensioni tipo PHP.
    Si possono avere più estensioni interpretate come PHP aggiungendole alla riga usando 
    uno spazio tra una estensione e l'altra. Nell'esempio si aggiungerà l'estensione
    .phtml

        AddType application/x-httpd-php .php .phtml

    E' comune, inoltre, aggiungere l'estensione phps per visualizzare
    il codice PHP colorato. Ciò può essere fatto con:

        AddType application/x-httpd-php-source .phps

17. Utilizzare le normali procedure per avviare il server Apache. (Occorre
    riavviare il server, e non forzare una ricarica tramite i segnali
    HUP o USR1.)

In base all'installazione di Apache e al tipo di Unix, esistono vari modi per fermare e avviare il server. Di seguito saranno illustrati alcuni metodi tipici per riavviare il server in differenti configurazioni di Apache/unix. Si deve sostituire /path/to/ con il percorso in cui risiedono queste applicazioni nel sistema.

Esempio 3-5. Esempio della sequenza di comandi per riavviare Apache

1. Diverse varianti di Linux e SysV:
/etc/rc.d/init.d/httpd restart

2. Utilizzando apachectl:
/path/to/apachectl stop
/path/to/apachectl start

3. httpdctl e httpsdctl (tramite OpenSSL), simile a apachectl:
/path/to/httpsdctl stop
/path/to/httpsdctl start

4. Usando mod_ssl, o un'altro server SSL, si può fermare e riavviare
   il server manualmente:
/path/to/apachectl stop
/path/to/apachectl startssl

La directory degli eseguibili apachectl e http(s)dctl spesso varia. Se nel sistema esistono i comandi locate oppure whereis oppure which, si possono utilizzare per localizzare i programmi di controllo del server.

Di seguito saranno illustrati differenti esempi di compila di PHP per Apache:

./configure --with-apxs --with-pgsql

Questo crea la libreria condivisa libphp4.so che è il modulo caricato da Apache tramite la linea LoadModule del file httpd.conf. Il supporto a PostgreSQL è compreso nella libreria libphp4.so.

./configure --with-apxs --with-pgsql=shared

Questo crea la libreria condivisa libphp4.so per Apache, ma crea anche una libreria condivisa pgsql.so che viene caricata in PHP o tramite le direttive del php.ini o caricata direttamente dallo script tramite la funzione dl().

./configure --with-apache=/path/to/apache_source --with-pgsql

Questo crea una libreria libmodphp4.a, un file mod_php4.c e altri file di contorno e li copia nella directory src/modules/php4 nell'albero dei sorgenti di Apache. Quindi si può compilare Apache utilizzando --activate-module=src/modules/php4/libphp4.a e quindi il sistema di compila di Apache creerà il file libphp4.a e lo includerà staticamente nell'eseguibile httpd. Il supporto per PostgreSQL verrà incluso direttamente in questo httpd, pertanto si avrà un unico eseguibile httpd comprendente tutto Apache e tutto il PHP.

./configure --with-apache=/path/to/apache_source --with-pgsql=shared

Come l'istruzione precedente, tranne che invece di includere PostgreSQL direttamente nel file finale httpd, si avrà una libreria condivisa pgsql.so che può essere caricata in PHP o tramite le direttive del php.ini o direttamente dallo script tramite la funzione dl().

Quando si compila il PHP nei differenti modi, si dovrebbe considerare i vantaggi e gli svantaggi di ciascun metodo. Compilarlo come libreria condivisa permette di compilare Apache separatamente, e quindi non si ha la necessità di ricompilarlo ogni volta che si desideri cambiare il PHP. Compilare il PHP all'interno di Apache (in modo statico) permette al PHP di essere caricato ed eseguito più velocemente. Per maggiori dettagli vedere la pagian di Apache sul supporto DSO.

Nota: Attaulmente il file httpd.conf fornito di default contiene una sezione come la seguente:

User nobody
Group "#-1"

A meno che non venga cambiata in "Group nogroup" o qualcosa di simile (è anche comune l'uso di "Group daemon") il PHP non sarà in grado di aprire i file.

Nota: Accertarsi di avere specificato la versione di apxs installate quando si usa --with-apxs=/path/to/apxs. NON usare la versione di apxs presente nei sorgenti di Apache, ma quella installata nel sistema.

Installazione di PHP su Windows con Apache 1.3.x

Esistono due metodi per installare PHP e Apache 1.3.x in Windows. Uno consiste nell'utilizzare l'eseguibile CGI (php.exe), la seconda consiste nell'usare il modulo DLL per Apache. In entrambi i casi occorre fermare il server Apache, editare il file httpd.conf per indicare ad Apache di utilizzare PHP.

Occorre notare che ora il modulo SAPI sotto Windows è stato reso molto più stabile, noi raccomandiamo l'uso di questo piuttosto che l'eseguibile CGI poichè è molto più trasparente e sicuro.

Sebbene vi possano essere alcune varianti nella configurazione di PHP con Apache, queste sono abbastanza semplici da essere utilizzate dai neofiti. Consultare la documentazione di Apache per maggiori dettagli sulle direttive di configurazione.

Se si decomprime il pacchetto PHP nella directory c:\php\ come descritto nella sezione Passi per l'installazione manuale, occorre inserire queste linee nella configurazione di Apache per attivare l'eseguibile CGI:

Occorre rilevare che la seconda riga può essere presente nelle nuove versioni di httpd.conf, ma è commentata. Ricordarsi, inoltre, di sostituire c:/php/ con la corretta directory del PHP.

Avvertimento

Utilizzando la configurazione CGI, il server è aperto a possibili attacchi. Leggere il capitolo CGI security per imparare a difendersi da questi attacchi.

Se si desidera utilizzare PHP come modulo di Apache, occorre copiare php4ts.dll nella directory windows/system (per Windows 9x/Me), winnt/system32 (per Windows NT/2000) o windows/system32 (per Windows XP) sostituendo ogni vecchio file. Quindi si deve aggiungere le seguenti linee al file httpd.conf

Dopo avere cambiato il file di configurazione, ricordarsi di riavviare il server, ad esempio, NET STOP APACHE seguito da NET START APACHE, se si esegue Apache come servizio di Windows, oppure utilizzare le opportune icone.

Esistono due metodi per attivare la funzionalità di visualizzazione del sorgente; tuttavia il loro funzionamento dipende dall'installazione. Se si ha configurato Apache per utilizzare PHP come modulo SAPI, allora aggiungendo la seguente linea al file httpd.conf (nello stesso punto in cui si è inserito AddType application/x-httpd-php .php) si può attivare questa caratteristica: AddType application/x-httpd-php-source .phps.

Se si è scelto di configurare Apache per utilizzare PHP come eseguibile CGI, allora occorre utilizzare la funzione show_source(). Per ottenere ciò creare uno script PHP e aggiungere questa riga: <?php show_source ("original_php_script.php"); ?>. Sostituire original_php_script.php con il nome del file di cui si vuole vedere il sorgente.

Nota: Nella versione Windows di Apache tutti i backslash nelle righe con percorsi tipo "c:\directory\file.ext", devono essere sostituiti con lo slash, tipo "c:/directory/file.ext".