ID: 44551
Comment by: john dot walsh at mini-net dot co dot uk
Reported By: laurent_baillif at hotmail dot com
Status: Open
Bug Type: Apache2 related
Operating System: *
PHP Version: 5.2.5
New Comment:
Hi,
I had a similar problem - stdout not getting to apache, but worked from
the command line.
I tried switching to using echo (with carefully constructed strings),
but that still didn't work.
Then, just to be sure, I put an echo "z" at the start (top level) of my
script.
The 'z' came through, along will all the rest of my scripts output.
I changed the echo "z" to echo "" - the script continued to work.
So it seamed that stdout needed some kick-into-life usage, before it
would work from my functions.
So something to try.
Note: I was outputting binary data, and I think the first character
would have been value 0x0A.
Yours,
John.
Previous Comments:
------------------------------------------------------------------------
[2008-03-27 15:28:19] laurent_baillif at hotmail dot com
Description:
------------
Hello,
I have an issue with STDOUT/OUTPUT of PHP. Im about to use a PHP
script for a RewriteMap directive inside APACHE. And I have identified
that APACHE never receive the output from my PHP script and this after
trying several way to send the output and also on several platform
(winXP/apache2/PHP5 & OPENSUSE/apache2/PHP5.2.5)
Thanks for your feedback
Regards,
Reproduce code:
---------------
I have this configuration in a virtual host of APACHE (Works fine if I
put a Perl script instead of PHP)
<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>
I can confirm my PHP script is working fine from the console (read
STDIN and write STDOUT) and when it is start with apache, he receive
correctly the STDIN but never send back the STDOUT. I have tried several
configurations in my script and APACHE never get the STDOUT and just
hang or return a blank URL.
My rewritemap.php script looks like this:
#!/usr/bin/php
<?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 didnt work
with apache
fwrite($output,"mynewURL?".$line); //try this with OUTPUT and
didnt work with neither
echo "mynewURL?".$line //try this one also but only works with
the console
}
?>
Expected result:
----------------
I can confirm my PHP script is working fine from the console (read
STDIN and write STDOUT) and when it is start with apache, he receive
correctly the STDIN but never send back the STDOUT.
With the same configuration a perl script is working fine for apache. I
have tried several configurations in my php script and APACHE never get
the STDOUT and just hang or return a blank URL.
Actual result:
--------------
Blank url or apache hang.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=44551&edit=1