Windows 2003 Server

Errore CGI - L'applicazione CGI specificata non ha restituito un insieme completo di intestazioni HTTP con PHP in modalità FastCGI su Windows 2003 Server (IIS 6)

Su alcuni dei nostri server si è verifcato l'errore in oggetto.

Intermittentemente il web server rispondeva con una pagina il cui contenuto era:

Errore CGI

L'applicazione CGI specificata non ha restituito un insieme completo di intestazioni HTTP.

Il problema è stato risolto disabilitando l'estensione wincache di PHP ossia modificando il file php.ini da

extension=php_wincache.dll

a

;extension=php_wincache.dll

 

$_SERVER['DOCUMENT_ROOT'] non definita con PHP in modalità FastCGI su Windows 2003 Server (IIS 6)

Se si installa PHP in modalità FastCGI su Windows 2003 (IIS 6) la variabile $_SERVER['DOCUMENT_ROOT'] non sarà disponibile nell'ambiente PHP.

Per ovviare a questo incoveniente sarà sufficiente eseguire le operazioni sotto:

Creare il file fastcgi.php con il seguente contenuto:

<?php
if(!isset($_SERVER["DOCUMENT_ROOT"]) || empty($_SERVER["DOCUMENT_ROOT"])) {
    $_SERVER["DOCUMENT_ROOT"] = substr($_SERVER['PATH_TRANSLATED'], 0, strlen($_SERVER['SCRIPT_NAME']) * - 1);
}    

(Notare la mancanza del tag di chiusura PHP. Questo assicura che tutto il codice è interpretato come PHP e non c'è output di new line o spazi).

Salvare il file nella cartella di installazione di PHP. Se si è installato PHP utlizzando la Web Platform di Microsoft allora la cartella predefinita sarà: C:\Programmi\PHP. Supponiamo sia questo il caso e salviamolo lì.

Configurare la direttiva auto_prepend_file nel php.ini nel seguente modo:

auto_prepend_file = C:\Programmi\PHP\fastcgi.php

Adesso gli script PHP potranno utilizzare la variabile $_SERVER['DOCUMENT_ROOT'] senza problemi.