Archives support

Yacs with FastCGI and Suexec ( debian ) [Intégré]

Yacs with FastCGI and Suexec

Avancement100%
WorkflowBesoin d'aide
StatutLa solution a été intégrée
Bonjour ;

Je viens de passer de simple CGI/suPHP à FastCGI/Suexec et je rencontre un problème d'entêtes avec Yacs.

En effet, losque je charge la page la première fois, pas de problèmes. Par contre lorsque j'effectue un rechargement ou encore que je tente de charger une autre page du site j'ai le droit une belle erreur 500 ( Internal Error ).

Ce problème apparaît avec PHP4 comme avec PHP5.

Après un petit tail, voici le genre de chose que j'obiens :

ns1:/var/log/apache2# tail error.log
[Wed Mar 05 10:30:21 2008] [error] [client 89.3.162.8] FastCGI: comm with server "/var/www/php-fcgi/primary/php4-fcgi-starter" aborted: error parsing headers: duplicate header 'Status'
[Wed Mar 05 10:30:14 2008] [error] [client 194.250.235.224] FastCGI: comm with server "/var/www/php-fcgi/primary/php4-fcgi-starter" aborted: error parsing headers: duplicate header 'Status', referer: http://www.nuxwin.com/article-38-debian-tutorial-configuration-dns-bind-9
...


Je présise que bissarement, lorsque je vide le cache du browser, la page se charge à nouveau.

Ayant effectué une recherche sur google, je suis "tombé" sur un post évoquant ce genre de problèmes avec wordpress dont voici le lien http://wordpress.org/support/topic/67416

Par ailleurs, dans cette discussion http://bugs.php.net/bug.php?id=36705 ils parlent plus précisément du problème.

D'après ce que j'ai compris, il faut modifier l'entête selon qu'il s'agit de php exécuté en tant que cgi (fastcgi) comme dans cet exemple :

if (substr(php_sapi_name(), 0, 3) == 'cgi')
header("Status: $status");
else
header("HTTP/1.1 $status");


Le problème, c'est que Bernard a particulièrement abusé ( ) en ce qui concerne l'utilisation de la fonction header() et du coup, comme y'en a un peu partout, je sais pas vraiment quoi modifier exactement.

Si Bernard pouvait m'aider à résoudre ce problème, merci.

Ps : A noter que je ne rencontre pas de problème avec mes autre applications (web).

Edit :

Après une petite analyse du code Yacs, il semble que tous les appels à la fonction header() passent par la librairie safe.php. Maintenant, reste à savoir quoi modifier et comment.

A priori, l'entête qui me pose problème est celui-ci (y'en a peut être d'autres...) :

Safe::header('Status: 304 Not Modified', TRUE, 304);


Je vais effectuer des testes mais si tu as déjà la solution Bernard, n'hésite pas.