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 this is not your bug, you can add a comment by following this link.
If this is your bug, but 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

Add a Patch

Pull Requests

Add a Pull Request

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-2024 The PHP Group
All rights reserved.
Last updated: Thu Mar 28 22:01:26 2024 UTC