php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #52911 fwrite doesn't write long strings to a php stream
Submitted: 2010-09-23 13:18 UTC Modified: 2021-11-23 11:32 UTC
Votes:7
Avg. Score:4.3 ± 0.7
Reproduced:6 of 6 (100.0%)
Same Version:3 (50.0%)
Same OS:4 (66.7%)
From: mz dot evgeny at gmail dot com Assigned: cmb (profile)
Status: Closed Package: *General Issues
PHP Version: 5.3.3 OS: Windows
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: mz dot evgeny at gmail dot com
New email:
PHP Version: OS:

Further comment on this bug is unnecessary.

 

 [2010-09-23 13:18 UTC] mz dot evgeny at gmail dot com
Description:
------------
fwrite doesn't write long strings to a stream.

When i try to open a php process and write a long-script to it, i get a parse error.


Test script:
---------------
 $descriptorSpec = array(
      0 => array('pipe', 'r'),
      1 => array('pipe', 'w'),
      2 => array('pipe', 'w')
 );
 $process = proc_open("php.exe", $descriptorSpec, $pipes); 
 var_dump(fwrite($pipes[0], "<?php  '" . str_repeat("1", 8500) . "'; ?>"));
 fclose($pipes[0]);

 $stdout = stream_get_contents($pipes[1]);
 fclose($pipes[1]);
proc_close($process);
 print_r($stdout);


Expected result:
----------------
int 8513
No error.

Actual result:
--------------
int 8513
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in - on line 1 

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2010-09-23 13:36 UTC] mz dot evgeny at gmail dot com
-Summary: fwrite doesn't write long strings to a stream +Summary: fwrite doesn't write long strings to a php stream -Package: Streams related +Package: *General Issues
 [2010-09-23 13:36 UTC] mz dot evgeny at gmail dot com
It will be more correct to say that it does write the whole string, but php.exe doesn't get the complete string for some reason.
 [2010-09-24 04:45 UTC] cataphract@php.net
Strangely, it works if you sleep(1) after proc_open.
 [2010-10-01 03:18 UTC] cataphract@php.net
-Status: Open +Status: Verified
 [2010-10-17 10:49 UTC] bouke at webatoom dot nl
I ran into the same problem, but sleep(1) didn't work. I had to use sleep(2) 
on my machine (Win7 x64 on C2Q9450).
 [2011-02-09 10:26 UTC] tyra3l at gmail dot com
any update on this?

Tyrael
 [2011-02-09 10:30 UTC] pajoye@php.net
If there is no further comment, no, no news.

Also there is a limit in the size of the command line arguments (platform-version 
dependent), so using very long cmd line is a bad idea, pipes or file based 
argument is a way better way to do such things.
 [2011-03-03 15:23 UTC] tyra3l at gmail dot com
so are we waiting for a patch, or is this a won'tfix?

Tyrael
 [2011-03-03 19:08 UTC] pajoye@php.net
-Block user comment: N +Block user comment: Y
 [2011-03-03 19:08 UTC] pajoye@php.net
This is a "do not know yet if it is fixable at all" use the alternative methods I 
mentioned in my other comment as work around, in the meantime.
 [2011-03-03 19:12 UTC] pajoye@php.net
-Status: Verified +Status: Assigned -Assigned To: +Assigned To: pajoye
 [2011-12-22 13:02 UTC] cataphract@php.net
Probable duplicate of bug #60535.
 [2017-10-24 07:35 UTC] kalle@php.net
-Status: Assigned +Status: Open -Assigned To: pajoye +Assigned To:
 [2021-11-23 11:32 UTC] cmb@php.net
-Status: Open +Status: Closed -Assigned To: +Assigned To: cmb
 [2021-11-23 11:32 UTC] cmb@php.net
This issue has been fixed[1] in the meantime; the fix is available
as of PHP 8.0.0.

[1] <https://github.com/php/php-src/commit/5cbe5a538c92d7d515b0270625e2f705a1c02b18>
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Sat Feb 08 17:01:29 2025 UTC