Req #27643 [Csd->Wfx]: include behavior (revisit #11326 and #9673)
| From: | aharvey@php.net | Date: | Sat, 14 Apr 2012 03:01:00 +0000 |
| Subject: | Req #27643 [Csd->Wfx]: include behavior (revisit #11326 and #9673) | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-169583@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=27643&edit=1
ID: 27643
Updated by: aharvey@php.net
Reported by: schapht at drexel dot edu
Summary: include behavior (revisit #11326 and #9673)
-Status: Closed
+Status: Wont fix
Type: Feature/Change Request
Package: *General Issues
Operating System: Mac OS 10.3.2
PHP Version: 4.3.4
-Assigned To: nikic
+Assigned To:
Block user comment: N
Private report: N
Previous Comments:
------------------------------------------------------------------------
[2012-04-13 20:55:11] nikic@php.net
./ is relative to the current working directory, which for most SAPIs is the originally called
script (namely index.php).
This cannot be changed in any case, due to BC concerns. If you want to include files relative to the
containing directory use __DIR__ . '/xyz.php'.
------------------------------------------------------------------------
[2011-10-18 17:01:28] clarkke8 at yahoo dot com
Still seeing this issue in 5.2. Very annoying. Ideally the include functions
(include, include_once, require, require_once) would not use the current working
directory, but rather the value of dirname(__FILE__) when looking for an included
file.
------------------------------------------------------------------------
[2004-03-18 20:07:40] schapht at drexel dot edu
Description:
------------
Php 4.3.4 still has this the issue reported in bugs
#11326 and #9673. Even though #11326 lists it as fixed
in (CVS/4.0.7).
Did the behavior change again? Is there a switch
somewhere I'm missing?
If not, would it be possible to add a switch (or another
function) so that includes could be based on the file
calling the include?
Reproduce code:
---------------
//index.php in ./
include_once("./include/A.class.php");
$a = new A();
echo $a->printer();
//A.class.php in ./include
include_once("./B.class.php");
class A {
function printer() {
$b = new B();
return $b->printer();
}
}
//B.class.php in ./include
class B {
function printer() {
return "did it work?";
}
}
Expected result:
----------------
did it work?
Actual result:
--------------
Warning: main(./B.class.php): failed to open stream: No
such file or directory in /Users/schapht/Sites/test/
include/A.class.php on line 3
Warning: main(): Failed opening './B.class.php' for
inclusion (include_path='.:/usr/local/lib/php') in /
Users/schapht/Sites/test/include/A.class.php on line 3
Fatal error: Cannot instantiate non-existent class: b in
/Users/schapht/Sites/test/include/A.class.php on line 7
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=27643&edit=1