Forum und email

Installazione

In questa sezione sono presenti le domande più frequenti riguardo l'installazione di PHP. PHP è disponibile per quasi tutti i sitemi operativi, eccetto forse MacOS prima di OSX, e per quasi tutti i webserver.

Per installare PHP, seguire le istruzioni del file Installazione e configurazione.

  1. Perché non dovrei usare Apache2 con il threaded MPM in un ambiente di produzione?
  2. Unix/Windows: dove devo copiare il mio file php.ini?
  3. Unix: ho installato PHP, ma ogni volta che carico uno script ricevo un messaggio di errore che dice: 'Document Contains No Data' (Lo script non contiene dati). Che sta succedendo?
  4. Unix: ho installato PHP usando dei pacchetti RPM, ma Apache non processa le mie pagine PHP. Che sta succedendo?
  5. Unix: ho installato PHP 3 usando dei pacchetti RPM, ma il supporto per database del quale ho bisogno non viene compilato correttamente. Che sta succedendo?
  6. Unix: ho installato la patch di Apache per avere compatibilità con le estensioni del server di FrontPage, e improvvisamente PHP ha smesso di funzionare: PHP è quindi incompatibile con le estensioni del server di FrontPage per Apache?
  7. Unix/Windows: ho installato PHP, ma se provo ad accedere ai miei script via browser, ricevo una pagina vuota.
  8. Unix/Windows: ho installato PHP, ma se provo ad accedere ai miei script via browser, ricevo un errore 500 dal server.
  9. Diversi sistemi operativi: ho installato PHP senza ricevere errori, ma se provo a far partire Apache ricevo un errore con strani simboli: [mybox:user /src/php4] root# apachectl configtest apachectl: /usr/local/apache/bin/httpd Undefined symbols: _compress _uncompress
  10. Windows: ho installato PHP, ma se provo ad accedere ai miei script via browser, ricevo questo errore: cgi error: The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
  11. Windows: ho seguito tutte le istruzioni, ma proprio non riesco a far convivere PHP con IIS!
  12. Quando uso PHP come un CGI con IIS, PWS, OmniHTTPD o Xitami, ricevo questo errore: Security Alert! PHP CGI cannot be accessed directly..
  13. Come faccio a capire se il mio php.ini è stato trovato e letto? Sembra che le mie modifiche non siano state impostate.
  14. Come aggiungere la cartella di PHP al PATH in Windows?
  15. Come rendo disponibile in windows il file php.ini?
  16. Si può usare la Apache content negotiation (opzione MultiViews) con PHP?
  17. PHP è limitato a processare solo metodi GET e POST?
  18. Perché non dovrei usare Apache2 con il threaded MPM in un ambiente di produzione?

    PHP è una colla. È la colla utilizzata per creare belle applicazioni web appiccicando decine di librerie di terze parti e facendole apparire come una entità coerente attraverso un'interfaccia di linguaggio intuitiva e facile da apprendere. La flessibilità e potenza di PHP dipendono dalla stabilità e robustezza della piattaforma sui cui gira. Ha bisogno di un sistema operativo funzionante, un web server funzionanante e delle librerie esterne funzionanti, per ottenere lo scopo. Se uno qualsiasi di questi elementi smette di funzionare, PHP ha bisogno di metodi per identificare il problema e risolverlo velocemente. Quando si rende il framework più complesso eliminando completamente i thread di esecuzione separata, i segmenti separati di memoria ed un solido ambiente in cui eseguire ogni richiesta, si introduce un punto di debolezza nel sistema PHP.

    Se il threaded MPM è necessario, meglio considerare una configurazione FastCGI dove PHP sia eseguito nel proprio spazio di memoria.

    Infine, questo avviso contro l'uso del threaded MPM non è così perentorio per i sistemi Windows poicé la maggior parte delle librerie su questa piattaforma tendono ad essere threadsafe.

    Unix/Windows: dove devo copiare il mio file php.ini?

    Nei sistemi Unix il percorso predefinito è /usr/local/lib ovvero <install-path>/lib. Molti utenti vorranno cambiare questo percorso durante la fase di compilazione con il flag --with-config-file-path. Per esempio potresti modificare il percorso in un modo simile a questo:

    --with-config-file-path=/etc
          
    e quindi dovresti copiare il file php.ini-dist della distribuzione in /etc/php.ini e modificarlo per ottenere tutti i cambiamenti voluti.

    --with-config-file-scan-dir=PATH 
          

    Nei sistemi Windows il percorso predefinito per php.ini corrisponde alla cartella stessa di Windows. Se si sta usano il web server Apache, php.ini viene prima cercato nella cartella di installazione di Apache, es c:\program files\apache group\apache. In questo modo si possono avere differenti php.ini per differenti versioni di Apache sulla stessa macchina.

    Vedere anche il capitolo sul file di configurazione.

    Unix: ho installato PHP, ma ogni volta che carico uno script ricevo un messaggio di errore che dice: 'Document Contains No Data' (Lo script non contiene dati). Che sta succedendo?

    Probabilmente PHP sta riscontrando un qualche tipo di problema e sta generando un core dump. Controlla il file log degli errori del tuo server ed individua il problema, quindi cerca di riprodurre il problema in un piccolo script. Se sai come usare 'gdb', sarebbe di aiuto fornire agli sviluppatori una copia dei messaggi di errore per consentire agli stessi di localizzare il problema. Se usi PHP come modulo di Apache prova ad eseguire le seguenti operazioni:

    • Ferma i tuoi processi httpd

    • gdb httpd

    • Ferma i tuoi processi httpd

    • > esegui -X -f /percorso/per/httpd.conf

    • Quindi trova l'URL che causa problemi usando il tuo browser

    • > esegui -X -f /percorso/per/httpd.conf

    • Se ottieni un, gdb ora dovrebbe informarti di ciò

    • digita: bt

    • Comunica il bug a » https://bugs.php.net/ includendo un backtrace del problema.

    Se nei tuoi script usi espressioni regolari (ereg() e simili), dovresti assicurarti di aver compilato PHP e Apache con lo stesso pacchetto di espressioni regolari. Ciò dovrebbe succedere automaticamente con PHP e Apache 1.3.x

    Unix: ho installato PHP usando dei pacchetti RPM, ma Apache non processa le mie pagine PHP. Che sta succedendo?

    Presumendo che tu abbia installato sia Apache che PHP da pacchetti RPM, hai bisogno di decommentare o aggiungere qualcuna o tutte le righe seguenti nel file httpd.conf:

    # Extra Modules
    AddModule mod_php.c
    AddModule mod_php3.c
    AddModule mod_perl.c
    
    # Extra Modules
    LoadModule php_module         modules/mod_php.so
    LoadModule php3_module        modules/libphp3.so     # per PHP 3
    LoadModule php4_module        modules/libphp4.so     # per PHP 4
    LoadModule perl_module        modules/libperl.so
    
    And add:
    AddType application/x-httpd-php3 .php3    # per PHP 3
    AddType application/x-httpd-php .php      # per PHP 4
    
    ... alle proprietà globali o alle proprietà del VirtualDomain su cui vuoi aggiungere il supporto PHP.

    Unix: ho installato PHP 3 usando dei pacchetti RPM, ma il supporto per database del quale ho bisogno non viene compilato correttamente. Che sta succedendo?

    A causa della struttura stessa di PHP 3, non è facile ottenere dei pacchetti RPM completi e flessibili. Questo problema è stato corretto in PHP 4. Per installare PHP 3, consigliamo di usare la guida presente nel file INSTALL.REDHAT della distribuzione PHP: se proprio non puoi fare a meno di installare PHP 3 tramite pacchetti RPM, leggi prima questo file...

    Per semplificare le fasi dell'installazione, i pacchetti RPM sono stati progettati per installare PHP senza il supporto per i database, e inoltre i pacchetti RPM usano la cartella /usr/ invece di /usr/local/ per copiare i file. Devi 'dire' ai pacchetti RPM in un file speciale quale supporto per databse installare e il percorso della cartella di livello superiore del tuo database.

    Questo esempio servirà a chiarire come aggiungere il supporto per gli ormai diffusi databse MySQL usando l'installazione mod di Apache.

    Ovviamente le righe seguenti possono essere modificate per qualsiasi tipo di database supportato da PHP. Presumendo che tu abbia installato sia Apache che MySQL solo con pacchetti RPM, quanto segue potrebbe esserti di aiuto:

    • Per prima cosa rimuovi mod_php3:

      rpm -e mod_php3
               

    • Quindi prendi i pacchetti RPM e installali di nuovo, non --rebuild

      rpm -Uvh mod_php3-3.0.5-2.src.rpm
               

    • Adesso modifica il file /usr/src/redhat/SPECS/mod_php3.spec

      Nella sezione %build aggiungi il supporto che desideri e il percorso.

      Per MySQL dovresti aggiungere: --with-mysql=/usr La sezione %build (installazione) dovrebbe ora essere simile a questa:

      ./configure --prefix=/usr \
      --with-apxs=/usr/sbin/apxs \
      --with-config-file-path=/usr/lib \
      --enable-debug=no \
      --enable-safe-mode \
      --with-exec-dir=/usr/bin \
      --with-mysql=/usr \
      --with-system-regex
               

    • Dopo aver fatto queste modifiche assembla i binari RPM come segue:

      rpm -bb /usr/src/redhat/SPECS/mod_php3.spec
               

    • Quindi installa i pacchetti RPM

      rpm -ivh /usr/src/redhat/RPMS/i386/mod_php3-3.0.5-2.i386.rpm
               

    Assicurati di riavviare Apache, quindi dovresti avere PHP 3 installato tramite pacchetti RPM con pieno supporto MySQL. Nota che probabilmente sarà più facile installare ciò seguendo le istruzioni presenti nel file INSTALL.REDHAT della distribuzione.

    Unix: ho installato la patch di Apache per avere compatibilità con le estensioni del server di FrontPage, e improvvisamente PHP ha smesso di funzionare: PHP è quindi incompatibile con le estensioni del server di FrontPage per Apache?

    No, PHP lavora senza problemi con le estensioni del server di FrontPage. Il problema è che la patch di FrontPage modifica diverse strutture di Apache dalle quali dipende PHP stesso. Per risolvere il problema ricompila PHP (usando 'make clean ; make') dopo aver installato la patch.

    Unix/Windows: ho installato PHP, ma se provo ad accedere ai miei script via browser, ricevo una pagina vuota.

    Controlla il sorgente della pagina che ricevi e probabilmente vedrai il codice sorgente del tuo script PHP. Ciò significa che il webserver non ha inviato lo script all'interprete PHP. C'è qualcosa che non va nella configurazione del webserver: confronta la configurazione del webserver con le istruzioni per installare PHP.

    Unix/Windows: ho installato PHP, ma se provo ad accedere ai miei script via browser, ricevo un errore 500 dal server.

    C'è qualcosa che non va al momento in cui il server prova a richiamare l'interprete PHP. Per ricevere un messaggio sensato di errore, dalla linea di comando, cambia la cartella che contiene l'eseguibile di PHP (php.exe sotto Windows) ed esegui php -i. Se PHP riscontrerà dei problemi durante l'esecuzione, comparirà un opportuno messaggio d'errore contente informazioni su cosa fare successivamente. Se riceverai una schermata di codice HTML (la stessa di phpinfo()) significherà che PHP sta lavorando correttamente, e quindi il problema potrebbe essere legato alla configurazione del server, che andrebbe quindi controllata.

    Diversi sistemi operativi: ho installato PHP senza ricevere errori, ma se provo a far partire Apache ricevo un errore con strani simboli:

    [mybox:user /src/php4] root# apachectl configtest
     apachectl: /usr/local/apache/bin/httpd Undefined symbols:
      _compress
      _uncompress
          

    Ciò non ha nulla a che vedere con PHP, ma con le librerie lato client di MySQL. Alcune richiedono --with-zlib, altre no. Questo argomento è ripreso meglio nelle FAQ relative a MySQL.

    Windows: ho installato PHP, ma se provo ad accedere ai miei script via browser, ricevo questo errore:

    cgi error:
     The specified CGI application misbehaved by not
     returning a complete set of HTTP headers.
     The headers it did return are:
          

    Questo errore vuol dire che PHP non è riuscito ad ottenere qualcuno di tutti gli output richiesti. Per ricevere un messaggio sensato di errore, dalla linea di comando, cambia la cartella che contiene l'eseguibile di PHP (php.exe sotto Windows) ed esegui php -i. Se PHP riscontrerà dei problemi durante l'esecuzione, comparirà un opportuno messaggio d'errore contente informazioni su cosa fare successivamente. Se riceverai una schermata di codice HTML (la stessa di phpinfo()) significherà che PHP sta lavorando correttamente, e quindi il problema potrebbe essere legato alla configurazione del server, che andrebbe quindi controllata.

    Dopo che PHP sta lavorando dalla linea di comando, prova ad accedere di nuovo ai tuoi script via browser. Se ancora ricevi messaggi di errore, il problema potrebbe essere dovuto ad una delle seguenti cose:

    • I permessi dei file php.exe, php4ts.dll, php.ini o di qualche altra estensione PHP che stai cercando di caricare potrebbero essere settati in modo da impedire l'accesso agli utenti anonimi di internet ISUR_<machinename>.
    • Il file dello script non esiste (o forse non è dove pensi in relazione alla tua root directory). Nota che con IIS puoi aggirare quest'ostacolo selezionando la voce relativa a 'check file exists' (controlla se il file esiste) nelle opzioni di Internet Services Manager. Se il file di uno script non esiste il server invierà un errore 404. C'è un ulteriore beneficio: IIS si preoccuperà di effettuare tutte le autenticazioni necessarie al posto tuo, in base ai permessi NTLanMan del tuo file contenente lo script.

    Windows: ho seguito tutte le istruzioni, ma proprio non riesco a far convivere PHP con IIS!

    Assicurati che l'utente con il quale stai cercando di eseguire script PHP abbia i permessi necessari per eseguire php.exe! IIS usa un utente anonimo che viene aggiunto al momento dell'installazione del webserver. Questo utente ha bisogno dei permessi appropriati per eseguire php.exe. Qualunque utente avrà bisogno dei permessi appropriati per eseguire php.exe. Se usi IIS4, hai bisogno di dire al webserver che c'è un parser PHP. Può essere utile leggere