Bug->Doc #52847 [Dup->Asn]: Files to include are always searched for in current directory

From: Date: Wed, 15 Sep 2010 09:32:42 +0000
Subject: Bug->Doc #52847 [Dup->Asn]: Files to include are always searched for in current directory
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-5046@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=52847&edit=1 ID: 52847 Updated by: aharvey@php.net Reported by: mail_ben_schmidt at yahoo dot com dot au Summary: Files to include are always searched for in current directory -Status: Duplicate +Status: Assigned -Type: Bug +Type: Documentation Problem -Package: Scripting Engine problem +Package: Documentation problem Operating System: Mac OS X 10.6.2 PHP Version: 5.3.2 -Assigned To: +Assigned To: aharvey Block user comment: N New Comment: Ah, I see now. It's happening further up the call chain -- after php_resolve_path() has failed to find anything using the include path, _php_stream_open_wrapper_ex() tries the plain file stream, which does look in the current working directory. Nothing we can do about it in terms of behaviour; it's just part of providing the option of including from URL streams. I'll document it. Previous Comments: ------------------------------------------------------------------------ [2010-09-15 10:22:28] mail_ben_schmidt at yahoo dot com dot au Please read this bug report more carefully. The included file is *not* in "the directory the currently executing file lives in" which is what #51569 addresses, and is the intended fallback behaviour. It is merely in the current working directory. (For many SAPIs this is the same initially, but not for the CLI, for instance, and not when a script has been included from another script running in a different directory.) The documentation suggests the current working directory will only be searched if "." is in include_path. This is false. The current directory is being searched anyway. I don't know if this is a behaviour or documentation problem. (The directory where the current script lives is being searched, too, but that is the subject of #51569, and undeniably a documentation problem.) ------------------------------------------------------------------------ [2010-09-15 08:43:26] aharvey@php.net This is intended behaviour: php_resolve_path() includes a fallback case at the end to search the directory the currently executing file lives in if all else fails. I'll update the documentation. Duping to doc bug #51569. ------------------------------------------------------------------------ [2010-09-15 03:32:15] mail_ben_schmidt at yahoo dot com dot au Actually, this may be a behaviour problem, not a documentation problem. ------------------------------------------------------------------------ [2010-09-15 03:26:04] mail_ben_schmidt at yahoo dot com dot au Description: ------------ The documentation at include and include_path suggests that the current directory will not be searched if a '.' is not in include path. Even though I can see no reason (e.g. in the source code referred to by bug #51569) that the current directory should be searched, it can be demonstrated that it is. See also bug #51569 and bug #52845 for further include_path documentation deficiencies. Test script: --------------- 1. Place in a file 'test/test.php': set_include_path('/bin'); // won't find any php files here! include('another.php'); 2. touch another.php 3. php test/test.php Expected result: ---------------- Warning that another.php cannot be found. Actual result: -------------- No warning. N.B. In line with the undocumented feature mentioned in bug #51569, if another.php is moved to test/another.php, it is still found also, because it is in the directory of the running script. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=52847&edit=1

« previous php.doc.bugs (#5046) next »