ID: 26073
Updated by: [EMAIL PROTECTED]
Reported By: php at trancer dot nl
-Status: Open
+Status: Closed
Bug Type: Documentation problem
Operating System: Debian Linux
PHP Version: 4.3.3
New Comment:
This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.
Thank you for the report, and for helping us make our documentation
better.
"Some web servers (e.g. Apache) change the working directory of a
script when calling the callback function. You can change it back by
e.g. chdir(dirname($_SERVER['PHP_SELF'])) in the callback function."
Previous Comments:
------------------------------------------------------------------------
[2003-12-04 08:48:07] Leblanc at phpzipscript dot org
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
------------------------------------------------------------------------
[2003-11-03 19:32:02] [EMAIL PROTECTED]
It's not PHP that changes the cwd but Apache.
------------------------------------------------------------------------
[2003-11-01 21:29:13] 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
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=26073&edit=1