From: nightstorm at tlen dot pl
Operating system: Windows XP
PHP version: 5.1.2
PHP Bug Type: Scripting Engine problem
Bug description: Destructor, include/require and path with "./"
Description:
------------
In the reproduce code we include a file "test.php" showing 'Hello World'
six times:
- Outside a destructor: "test.php"
- Outside a destructor: "D:\server\www\test\test.php" (full path)
- Outside a destructor: "./test.php"
These three cases work. We don't change include path and try them in a
destructor:
- Outside a destructor: "test.php" - works
- Outside a destructor: "D:\server\www\test\test.php" (full path) -
works
- Outside a destructor: "./test.php" - No such file or directory, even if
the file exists.
Outside a destructor, PHP parses correctly the include path, inside it
seems to be broken, because a fatal error is generated. PHP manual doesn't
explain why the last case doesn't work, I also can't find any reason. I
hope you'll fix it quickly.
---Configuration---
Windows XP SP 2 (NTFS)
PHP 5.1.2
Apache 2.0.55
Ze1.compatibility = 0
Include path = .;C:\php5\pear (PHP 5 default)
Safe mode = off
Reproduce code:
---------------
test.php:
<?php
echo 'Hello world!<br/>';
?>
problem.php:
<?php
require('test.php');
require('D:\server\www\test\test.php');
require('./test.php');
class foo{
function __destruct()
{
require('test.php');
require('D:\server\www\test\test.php');
require('./test.php');
}
}
$foo = new foo;
?>
Expected result:
----------------
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!
Actual result:
--------------
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!
Warning: foo::require(./test.php) [function.require]: failed to open
stream: No such file or directory in D:\server\www\test\problem.php on
line 11
Fatal error: foo::require() [function.require]: Failed opening required
'./test.php' (include_path='.;C:\php5\pear') in
D:\server\www\test\problem.php on line 11
--
Edit bug report at http://bugs.php.net/?id=36454&edit=1
--
Try a CVS snapshot (PHP 4.4):
http://bugs.php.net/fix.php?id=36454&r=trysnapshot44
Try a CVS snapshot (PHP 5.1):
http://bugs.php.net/fix.php?id=36454&r=trysnapshot51
Try a CVS snapshot (PHP 6.0):
http://bugs.php.net/fix.php?id=36454&r=trysnapshot60
Fixed in CVS: http://bugs.php.net/fix.php?id=36454&r=fixedcvs
Fixed in release:
http://bugs.php.net/fix.php?id=36454&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=36454&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=36454&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=36454&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=36454&r=support
Expected behavior: http://bugs.php.net/fix.php?id=36454&r=notwrong
Not enough info:
http://bugs.php.net/fix.php?id=36454&r=notenoughinfo
Submitted twice:
http://bugs.php.net/fix.php?id=36454&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=36454&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=36454&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=36454&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=36454&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=36454&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=36454&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=36454&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=36454&r=mysqlcfg