|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-11-01 21:29 UTC] php at trancer dot nl
Description:
------------
A script that does file_get_contents or file in the callback function of ob_start wont work. The file_get_contents function cant open the file.
<?php
// Ob callback
function ob($buffer)
{
return file_get_contents('open.txt');
}
ob_start('ob');
?>
The behaviour is so because the callback sets its cwd to the root of the disk instead of the folder the script was called from.
If I copy the file I want to open to my root it can open, otherwise it will throw me this error.
Warning: file_get_contents(open.txt): failed to open stream: No such file
or directory in /var/www/test.php on line 6
Specifying the full path works. Could be a possible bug in the callback, otherwise a documentation problem because I was unable to find it anywhere in the docs.
Reproduce code:
---------------
<?php
// Ob callback
function ob($buffer)
{
return file_get_contents('open.txt');
}
ob_start('ob');
?>
Expected result:
----------------
The content of open.txt
Actual result:
--------------
Warning: file_get_contents(open.txt): failed to open stream: No such file
or directory in /var/www/test.php on line 6
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Wed Nov 19 12:00:02 2025 UTC |
here is a workaround I use to avoid such problems (I also use it with CLI scripts to avoid path troubles when launching a script from a different directory). At the beginning of the script add : <?php define("SCRIPTPATH", str_replace("\\", "/", realpath(dirname(__FILE__)))); ?> in your ob() callback you now need to do : <?php // Ob callback function ob($buffer) { return file_get_contents(SCRIPTPATH.'/open.txt'); } ob_start('ob'); ?> /Leblanc