BUG: Les scripts php n'envoie pas l'output/STDOUT à Apache2

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : BUG: Les scripts php n'envoie pas l'output/STDOUT à Apache2

par styllau » 14 avr. 2008, 12:03

Merci pour vos réponses. Mais c'est idem avec un "w+".

Ce qui est bizarre c'est que en ligne de commande toutes les configurations fonctionnent. Par contre apapche lui est incapable de lire de STDOUT, ou alors il ne reçoit rien.

Au risque de paraitre "idiot" j'ai ouvert un ticket d'incident chez php, mais pas de réponses pour le moment. :-\

Qui d'autre à des idées??? :-=)

par Hywan » 14 avr. 2008, 11:42

On sait jamais ^^.

par Sékiltoyai » 14 avr. 2008, 03:49

Euh, pour le flag w+, il rajoute l'ouverture en lecture, c'est inutile, output (comme stdout) ne s'ouvre qu'en écriture…

par Hywan » 13 avr. 2008, 23:46

Hey :),

c'est peut-être con ce que je vais dire, mais même avec un flag à w+ pour php://output ça ne marche pas ?
Et si tu essayes sur le protocole php://stdout ?

BUG: Les scripts php n'envoie pas l'output/STDOUT à Apache2

par styllau » 11 avr. 2008, 10:06

J'ai un pbl avec les fonctions STDOUT/OUTPUT de PHP. J'utilise sur linux suse un script PHP avec une directive RewriteMap dans la configuration de APACHE2. J'ai isolé le pblm en constatant qur PHP n'envoie jamais de $OUTPUT et ou STDOUT à APACHE. J'ai fait le tests sur plusieurs plateformes: (winXP/apache2/PHP5 & OPENSUSE/apache2/PHP5.2.5)

Voila ma configuration Apache (Elle marche très bien avec un script perl la directive RewriteMap

Code : Tout sélectionner

<VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "/home/mywork/web/partenaire" ServerName mytest.mydomain.com DirectoryIndex index.php ErrorLog /home/mywork/log/apache/error.log LogLevel debug RewriteLog /home/mywork/log/apache/rewrite.log RewriteLogLevel 9 RewriteEngine on #RewriteLock /home/mywork/web/partenaire/test/rewrite.lock #RewriteMap rewritemap prg:/home/mywork/web/partenaire/test/rewritemap.perl RewriteMap rewritemap prg:/home/mywork/web/partenaire/test/rewritemap.php RewriteOptions Inherit RewriteRule ^/test/(.*)$ ${rewritemap:%{REQUEST_URI}} [L] <Directory "/home/mywork/web/partenaire"> Options FollowSymLinks AllowOverride all Order allow, deny Allow from all </Directory> </VirtualHost>

J'ai vérifié qu mon script PHP fonctionne très bien à partir d'une console ou CMD sur XP => Il lit bien le STDIN et renvoie bien le STDOUT. Mais dès que je démarre Apache2 avec ce script il reçoit bien le STDIN mais ne reçoi jamais le STDOUT.


Mon script rewritemap.php ressemble à sa:
#!/usr/bin/php5

<?php

//Flag to verify the script is starting
//$handle = fopen ("home/stat.txt", 'a+');
//fwrite($handle, date("H")."h".date("i")."m".date("s").": start of the script\r\n");
//fclose($handle);

$stdin = fopen ('php://stdin', 'r');
$output = fopen('php://output', 'w');
ob_implicit_flush (true);  // Use unbuffered output

while ($line = fgets ($stdin)) {
        $line = trim($line);

//Flag to verify the script is receinving STDIN
//$handle = fopen ("home/stat.txt", 'a+');
//fwrite($handle, date("H")."h".date("i")."m".date("s").": Just receive: $line \r\n");
//fclose($handle);

    fwrite(STDOUT,"mynewURL?".$line);  //try this one and didn’t work with apache
    fwrite($output,"mynewURL?".$line);  //try this with OUTPUT and didn’t work with neither

    echo "mynewURL?".$line    //try this one also but only works with the console

}

?>
J'ai eu la confirmation que mon script PHP fonctionne grace aux flags que j'ai positionnés; il reçoit correctement le STDIN mais ne renvoie jamais le STDOUT à Apache. Et je me répète mais la même configuraiton avec le script Perl fonctionne correctement.


Merci bcp pour votre aide!!
A+