Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Php FAST CGI con Internet Information Services

Come utilizzare al meglio PHP su Windows e IIS come CGI o Fast CGI
Come utilizzare al meglio PHP su Windows e IIS come CGI o Fast CGI
Link copiato negli appunti

Chi si trova nella necessità di utilizzare Php su piattaforma Windows, e pretenda affidabilità e stabilità assolute, al momento deve necessariamente optare per Internet Information Services (il webserver Microsoft) e Php nella versione CGI.

Le ragioni per questa scelta sono almeno tre:

  • In ambiente Windows il webserver Apache 1.3.x IIS
  • Apache 2.x e Php
  • Il filtro ISAPI IIS non riesce a convivere

In questo articolo esamineremo l'installazione di Php 4.3.x come CGI e Fast CGI in Windows 2000 con IIS 5, ma gran parte delle indicazioni che daremo saranno valide anche per Windows NT e XP.

Due parole su CGI e Fast CGI

La Common Gateway Interface (CGI appunto) non ha bisogno di troppe presentazioni: è una tecnologia indipendente dalla piattaforma che consente a un Webserver di chiamare qualsiasi programma esterno, prenderne l'output, racchiuderlo negli header HTTP e inviare i dati al browser.

È un protocollo relativamente semplice, e fino a qualche anno fa il binomio Perl/CGI rappresentava il sistema più diffuso per la realizzazione di applicazioni server-side.

L'unica controindicazione riguarda il pesante sovraccarico ("overhead") che, specialmente nel caso dei linguaggi di scripting, può comportare per il server: infatti ogni volta che riceve una richiesta diretta ad uno script il webserver deve caricare in memoria l'interprete del linguaggio (php.exe nel caso di Php), effettuare la compilazione del codice, eseguire le operazioni previste e catturare l'eventuale output.

Fast CGI e un'evoluzione dello standard CGI che pone rimedio all'"overhead" e consente prestazioni spesso superiori anche a quelle ottenibili con l'integrazione di un linguaggio nel webserver (attraverso i classici moduli di Apache o i filtri ISAPI per IIS ).
In Fast CGI il processo descritto poco fa non si esaurisce al termine dell'esecuzione del programma, ma persiste in memoria per un certo lasso di tempo ed è pronto a riattivarsi per soddisfare nuove richieste.

Installazione di Php CGI per IIS

Per prima cosa scarichiamo da www.php.net il "package" con la distribuzione Php per Windows, evitiamo "l'installer" (scelta comoda ma sconsigliata in ambiente di produzione) e procediamo con l'installazione manuale.

La distribuzione Php per Windows contiene due file chiamati entrambi "php.exe": uno è l'eseguibile pensato per utilizzare Una shell in PHP e si trova nella directory CLI, l'altro si trova nella directory principale ed è appunto Php versione CGI/Fast CGI.

Ecco i passaggi che dovremo seguire supponendo di aver posto l'eseguibile CGI nel percorso C:php4.3.3php.exe

  1. Apriamo lo snap-in IIS start > impostazioni > pannello di controllo > strumenti di amministrazione > gestione servizi internet
  2. Espandiamo Configurazione > Mapping Applicazioni > Aggiungi
  3. Alla voce "Eseguibile " indichiamo il path "C:php4.3.3php.exe"
  4. Selezioniamo le opzioni "Tutti i verbi" (se vogliamo che lo script sia accessibile attraverso tutti i metodi HTTP), "Modulo Script" e "Verifica l'esistenza del file", infine diamo "Ok".

Le operazioni ai punti 3 4 ogni estensione

La configurazione di IIS riavviare il servizio

Il procedimento per abilitare Php in un determinato Virtualhost o in una singola directory è analogo a quello appena visto.

Importante: impostazioni di php.ini

Il file di configurazione utilizzato da Php deve trovarsi in un percorso all'interno del "Path" di Windows, il contenuto di questa variabile d'ambiente è verificabile da "pannello di controllo > sistema > avanzate > variabili di ambiente".

Di solito si preleva il file "php.ini-dist" presente nel pacchetto di installazione e lo si pone in C:/WINNT rinominandolo "php.ini": questa sarà la configurazione che, solo con CGI, viene letta ad ogni accesso ad uno script.

Affinchè Php/CGI funzioni correttamente con IIS è necessario modificare in php.ini due direttive con i valori che indichiamo qui sotto:


cgi.fix_pathinfo = 1

Il significato di queste modifiche è spiegato nel manuale ufficiale

Per conferma inseriamo nella webroot

e diamo un'occhiata alle informazioni sulla nostra installazione.

Importante: permessi di accesso

È probabile che a questo punto gli script abbiano soltanto l'accesso in lettura a file e directory all'interno della webroot: le opportune autorizzazioni (lettura, scrittura, esplorazione) vanno verificate prima di tutto attraverso la normale gestione dei permessi di Windows 2000, e poi nelle impostazioni del webserver (pannello "Home Directory" o "Directory" descritto al punto 2 del paragrafo precedente).

Abbiamo finito, attraverso CGI ora il webserver Microsoft è in grado di eseguire anche script Php oltre alle tradizionali pagine ASP; nei prossimi paragrafi scopriremo come beneficiare dei vantaggi di Fast CGI.

Fast CGI e Php

php.exe è compatibile con Fast CGI a partire dalla versione 4.3.0 tuttavia, visto che solo di recente sono stati risolti alcuni bug, è indispensabile ricorrere ad una release pari o superiore alla 4.3.3.

Fast CGI con Internet Information Services

IIS supporta Fast CGI attraverso un modulo di terze parti che è stato pensato appositamente per Php, ma può essere sfruttato da qualsiasi linguaggio compatibile con il protocollo (Perl, Python, TCL etc.).

Installazione e configurazione

  • Scarichiamo il modulo dal sito del suo autore, Shane Caraveo http://www.caraveo.com/fastcgi/
  • salviamo il file per IIS (isapi_fcgi.dll C:php4.3.3fcgiisapi_fcgi.dll
  • Eseguiamo tutti i passaggi già visti 3 isapi_fcgi.dll "FastCGI Process Manager"

Ora è fondamentale aggiungere alcune voci al registro di sistema di Windows:

  • raggiungiamolo con " start > esegui > regedit.exe"
  • facciamo un backup del registry nel caso in cui qualcosa vada storto ("Registro di sistema > Esporta file del registro di sistema"
  • Raggiungiamo la posizione HKEY_LOCAL_MACHINESOFTWARE, cliccando con tasto destro del mouse su SOFTWARE aggiungiamo una nuova chiave aggiungiamo la chiave ".php"
  • Sempre utilizzando con il tasto destro del mouse inseriamo in ".php" due valori "AppPath" C:php4.3.3php.exe "Bind-Path" "php-fcgi"

In questo modo abbiamo "mappato" gli script con estensione ".php" a Php Fast CGI anzichè alla versione CGI "tradizionale", e anche quest'ultima operazione va ripetuta per tutte le estensioni da registrare.

Se tutto è andato per il meglio, dopo aver riavviato il webserver scopriremo che phpinfo() presenta alcune nuove variabili del tipo $_SERVER['FCGI_XXXX'].

Lanciando task manager ci saranno uno o più processi "php.exe" ancora attivi anche dopo che lo script avrà terminato l'esecuzione, questi sono i processi persistenti pronti a risvegliarsi per servire richieste successive.

È importante tenere presente che nel caso di Fast CGI è indispensabile riavviare il webserver ad ogni modifica del php.ini.

Conclusioni

Abbiamo visto come sia possibile utilizzare Php anche su piattaforma Windows in modo sicuro e senza penalizzare le prestazioni.

Fast CGI è una tecnologia che consente funzionalità molto più avanzate di quelle che abbiamo potuto evidenziare in questo articolo, specialmente se applicata al webserver Apache e in ambiente "Unix-like".

Nella speranza di aver suscitato almeno un po' di curiosità elenco qui sotto la maggior parte delle poche fonti disponibili sull'argomento.

Bibliografia

Ti consigliamo anche