locked
Devo riavviare apache dopo ogni boot per far funzionare il php RRS feed

  • Domanda

  • Inoltro la domanda che avevo inserito in Answers perché mi è stato detto di porla in questo forum. Ecco la domanda:

    Sul mio PC con Windows 7 Professional 64-bit ho installato Apache server 2.2, PHP 5.3.8 e MySQL 5.5.

    Ogni volta che avvio il PC quando cerco di aprire con il browser un file PHP il server Apache non mi interpreta il file e mi trovo con una pagina bianca. Se fermo il server Apache e successivamente lo avvio di nuovo (non se faccio il riavvio con il comando Restart) tutto funziona perfettamente e il browser mi mostra la pagina prodotta dal PHP correttamente, anche senza riavviare il browser (cioè funziona anche se, mentre riavvio il server Apache come detto, non chiudo il browser e poi, al termine della procedura di avvio del server, ricarico semplicemente la pagina).

    Non faccio un uso molto intensivo di questi programmi per cui si tratta di un fastidio da poco, però mi piacerebbe che tutto funzionasse senza dover fermare il server e poi avviarlo di nuovo. Qualcuno mi può suggerire qualche tentativo per risolvere questo strano problema?

    Ciao.

    Mario

    lunedì 9 gennaio 2012 18:00

Risposte

  • Adesso è cambiato qualcosa. Dopo che ho inserito la domanda, mi sono fatto anche un giro su vari forum in inglese. Mi è venuto il dubbio che l'installer del PHP non avesse fatto una modifica efficace del file di configurazione di Apache. In sostanza l'installer ha aggiunto un paio di righe in fondo, con il comando LoadModule php5_module e PHPIniDir. Io ho fatto una modifica manuale ed ho spostato il comando LoadModule nella sezione di httpd.conf dove si trovano gli altri comandi di caricamento moduli. Poi in fondo ho inserito:

    <IfModule php5_module>
    PHPIniDir "C:\Program Files (x86)\PHP\"
    AddType application/x-httpd-php .php
    </IfModule>

    Purtroppo essendo programmi che uso sporadicamente in questi giorni non ho una statistica rigorosa di quanto è accaduto ad ogni riavvio, però quando ho usato il server Apache, a parte una volta che l'ho trovato arrestato (sono andato a vedere nel registro degli eventi e si era avviato e subito arrestato automaticamente) tutto funziona benissimo, cioé il php funziona senza bisogno di riavviare Apache. La volta che l'ho trovato arrestato, è stato sufficiente il comando Start dall'Apache Monitor per farlo partire senza altri problemi ed anche in questo caso il php funzionava perfettamente.

    Aggiungo un'ultima nota. Ho guardato all'elenco dei servizi ed in corrispondenza del servizio Apache2.2 la descrizione è:

    Apache/2.2.21 (Win32) PHP/5.3.8

    Io non ho mai modificato il campo descrizione, però non posso dire se la descrizione fosse già stata modificata dall'installer del PHP perché me ne sono accorto solo oggi.

    Secondo voi il cambiamento di Apache è riconducibile alla modifica che ho fatto io al file httpd.conf?

    Ciao

    • Contrassegnato come risposta Anca Popa venerdì 20 gennaio 2012 13:44
    mercoledì 11 gennaio 2012 14:21

Tutte le risposte

  • Ciao, hai usato una suite easyphp per installare il tutto per caso? ho avuto un problema simile, ma ne sono uscito solamente installando una bella VM e facendo girare il sistema su un 32 bit (io ho usato un 2003 R2, ma anche un Xp basta e avanza). credo che sia un problema legato ai servizi che non startano correttamente, avevo anche cambiato il tempo di start del servizio ma con me non aveva funzionato. Spero di averti dato una mano...sai qui Linux è un po fuori dal lavoro quotidiano ed anche io non ho avuto tempo di investigare...

    A.

    mercoledì 11 gennaio 2012 09:30
    Moderatore
  • L'esecuzione automatica o un task temporizzato potrebbero ovviare al problema:

    Prova semplicemente a creare un task schedulato che esegue il seguente comando
    httpd.exe -k restart
    la schedulazione dovrebbe essere al logon dell'utente o  all'avvio del sistema  ...
    Da da un cmd eseguito come amministratore puoi creare il task in questione:
    CHTASKS /Create  /SC onstart /TN "Task di riavvio apache" /TR "c:\percorso\al\file\http.exe -k restart" /RU system   /f

    ovviamente è un workaround ad un servizio che non si comporta correttamente...

    bisognerebbe capire cosa succeda esattamente controllare "i log files  di apache" , l'event viewer, ritentare un
    httpd.exe -k uninstall 
    httpd.exe -k install 


    Gastone Canali >http://www.armadillo.it
    mercoledì 11 gennaio 2012 11:47
    Moderatore
  • Non credo... io ho installato Apache con un pacchetto scaricato dal sito omonimo, mentre il PHP l'ho scaricato da windows.php.net/download.

    Vedi anche la risposta successiva.

    mercoledì 11 gennaio 2012 14:02
  • Adesso è cambiato qualcosa. Dopo che ho inserito la domanda, mi sono fatto anche un giro su vari forum in inglese. Mi è venuto il dubbio che l'installer del PHP non avesse fatto una modifica efficace del file di configurazione di Apache. In sostanza l'installer ha aggiunto un paio di righe in fondo, con il comando LoadModule php5_module e PHPIniDir. Io ho fatto una modifica manuale ed ho spostato il comando LoadModule nella sezione di httpd.conf dove si trovano gli altri comandi di caricamento moduli. Poi in fondo ho inserito:

    <IfModule php5_module>
    PHPIniDir "C:\Program Files (x86)\PHP\"
    AddType application/x-httpd-php .php
    </IfModule>

    Purtroppo essendo programmi che uso sporadicamente in questi giorni non ho una statistica rigorosa di quanto è accaduto ad ogni riavvio, però quando ho usato il server Apache, a parte una volta che l'ho trovato arrestato (sono andato a vedere nel registro degli eventi e si era avviato e subito arrestato automaticamente) tutto funziona benissimo, cioé il php funziona senza bisogno di riavviare Apache. La volta che l'ho trovato arrestato, è stato sufficiente il comando Start dall'Apache Monitor per farlo partire senza altri problemi ed anche in questo caso il php funzionava perfettamente.

    Aggiungo un'ultima nota. Ho guardato all'elenco dei servizi ed in corrispondenza del servizio Apache2.2 la descrizione è:

    Apache/2.2.21 (Win32) PHP/5.3.8

    Io non ho mai modificato il campo descrizione, però non posso dire se la descrizione fosse già stata modificata dall'installer del PHP perché me ne sono accorto solo oggi.

    Secondo voi il cambiamento di Apache è riconducibile alla modifica che ho fatto io al file httpd.conf?

    Ciao

    • Contrassegnato come risposta Anca Popa venerdì 20 gennaio 2012 13:44
    mercoledì 11 gennaio 2012 14:21
  • Spostare la parte del php nella loadModule non dovrebbe aver cambiato nulla ... prima tovandosi per ultima avrebbe "vinto" su eventuali  <IfModule php5_module> precedenti ("Later sections override earlier ones")

     Leggendo il post non capisco, apache funziona ora ? Intendi questo come cambiamento? Se il modulo di php non funzionava correttamente l'unico modo era leggere gli error.log o fare una pagina test.php con la singola linea che riporto e vedere i moduli caricati...

    <?php phpinfo(); ?>

     


    Gastone Canali >http://www.armadillo.it
    mercoledì 11 gennaio 2012 15:12
    Moderatore
  • Scusa se mi sono spiegato male. Si in effetti adesso funziona tutto perfettamente, a parte una sola volta in cui ho notato che la pagina php non si era caricata ed ho rilevato che questo era dovuto al fatto che il server apache si era arrestato subito dopo l'avvio. Mi è successo per quanto ne so una volta sola, almeno da una ricerca fatta sul registro eventi ho identificato solo un'occasione in cui questo è avvenuto.

    Riguardo agli error log, per Apache non trovo nulla. Ho solo un avvertimento ad ogni riavvio:

    "[warn] pid file C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?"

    PHP invece non mi risulta avere log degli errori.

    Per quanto riguarda phpinfo() lo conosco e lo usavo già. Il problema non riguarda il caricamento dei moduli di PHP, ma il caricamento del PHP stesso. Mi spiego. Il malfunzionamento che mi capitava (uso il passato perché da qualche giorno non mi è più successo) era che il server apache non visualizzava le pagine con codice PHP. Faccio un esempio. Anche io per prova ho un file con la sola istruzione phpinfo. Quando non funzionava, se aprivo la pagina prova.php (come dicevo con unica istruzione <?php phpinfo(); ?>) veniva visualizzata una pagina completamente vuota e se aprivo la sorgente della pagina anche questa era completamente vuota. In tale situazione, se aprivo un file html (tipo il classico "it works") il server apache me lo visualizzava senza problemi (e d'altro canto nel monitor Apache il server veniva indicato funzionante).

    giovedì 12 gennaio 2012 08:35
  • Solitamente se il modulo del php non viene caricato, il browser cerca si scaricare la pagina php come se fosse un file....  il comportamento forse era dovuto al conf (http.conf ) che  di solito termina con i virtual host enon con i moduli
    Per phpinfo se non va php, hai ragione è inutile (ma stavo pensando agli altri moduli...)

    Tutto risolto

    Ciao e alla prossima 

     


    Gastone Canali >http://www.armadillo.it
    giovedì 12 gennaio 2012 08:59
    Moderatore