Edit report at https://bugs.php.net/bug.php?id=27643&edit=1

 ID:                 27643
 Updated by:         ni...@php.net
 Reported by:        schapht at drexel dot edu
 Summary:            include behavior (revisit #11326 and #9673)
-Status:             Open
+Status:             Closed
 Type:               Feature/Change Request
-Package:            Feature/Change Request
+Package:            *General Issues
 Operating System:   Mac OS 10.3.2
 PHP Version:        4.3.4
-Assigned To:        
+Assigned To:        nikic
 Block user comment: N
 Private report:     N

 New Comment:

./ 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'.


Previous Comments:
------------------------------------------------------------------------
[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

Reply via email to