Edit report at https://bugs.php.net/bug.php?id=27643&edit=1
ID: 27643 Updated by: ahar...@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] ni...@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