ID: 36249 Updated by: [EMAIL PROTECTED] Reported By: john at castlecomm dot com -Status: Open +Status: Bogus Bug Type: Unknown/Other Function Operating System: ALL PHP Version: 4.4.2 New Comment:
http://php.net/include "Files for including are first looked in include_path relative to the current working directory and then in include_path relative to the directory of current script. E.g. if your include_path is ., current working directory is /www/, you included include/a.php and there is include "b.php" in that file, b.php is first looked in /www/ and then in /www/include/. If filename begins with ./ or ../, it is looked only in include_path relative to the current working directory." Previous Comments: ------------------------------------------------------------------------ [2006-02-01 18:13:15] john at castlecomm dot com Description: ------------ Including a file using a relative path after INI SETTING the include_path does not work. Setting the include_path works, but but PHP does not use it correctly. This is a major flaw in the include logic. A full detailed example is listed under the "Reproduce code" section. Please fix this as soon as possible, as it is having drastic negative affects on my software with your latest version. Also, your "CAPTCHA" picture needs to be larger...the "R" in my code gets cut off and goes off the screen. I could barely make it out. Reproduce code: --------------- [john@(PROTECTED) error]$ cat mainfile.php <? $include_path = ini_get('include_path'); $include_path .= ':./ws:'; //this doesn't even work with an absolute path ini_set('include_path', $include_path); include 'ws/wsfile.php'; print "Hi! I'm mainfile!\n"; ?> [john@(PROTECTED) error]$ cat ws/wsfile.php <? include_once '../inc/incfile.php'; print "Hi! I'm wsfile!\n"; ?> [john@(PROTECTED) error]$ cat inc/incfile.php <? print "Hi! I'm incfile!\n"; ?> [john@(PROTECTED) error]$ php mainfile.php Warning: main(../inc/incfile.php): failed to open stream: No such file or directory in /(PROTECTED)/john/error/ws/wsfile.php on line 2 Warning: main(): Failed opening '../inc/incfile.php' for inclusion (include_path='.:/usr/local/lib/php:./ws:') in /(PROTECTED)/john/error/ws/wsfile.php on line 2 Hi! I'm wsfile! Hi! I'm mainfile! Expected result: ---------------- The INI SET works, but include_once, as well as the others, do not work correctly. It can't find the relatively included file...even though the INI include_path is set. The code should work because the include path has been set properly. Even the error output shows the right include path, but the include_once directive just fails. This is a major error and is having really bad results on my software. Please fix this asap! Actual result: -------------- [john@(PROTECTED) error]$ php mainfile.php Warning: main(../inc/incfile.php): failed to open stream: No such file or directory in /(PROTECTED)/john/error/ws/wsfile.php on line 2 Warning: main(): Failed opening '../inc/incfile.php' for inclusion (include_path='.:/usr/local/lib/php:./ws:') in /(PROTECTED)/john/error/ws/wsfile.php on line 2 Hi! I'm wsfile! Hi! I'm mainfile! ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=36249&edit=1