#23282 [Opn->Bgs]: include and require break with "./"

From: Date: Tue, 22 Apr 2003 05:59:32 +0000
Subject: #23282 [Opn->Bgs]: include and require break with "./"
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-38037@lists.php.net to get a copy of this message
ID: 23282 Updated by: rasmus@php.net Reported By: russell+php dot net at loosenut dot com -Status: Open +Status: Bogus Bug Type: Scripting Engine problem Operating System: Solaris PHP Version: 4.3.2RC1 New Comment: This works just fine in PHP 4.3. The output from your test script here is: Including file: File Successfully Included Including file with dot-slash: File Successfully Included There must be something else going on you aren't telling us about. Previous Comments: ------------------------------------------------------------------------ [2003-04-21 21:49:54] philip@php.net Woah, is this report really saying that include './foo.php' will no longer work?! Why? This would be a huge BC issue. ------------------------------------------------------------------------ [2003-04-21 13:20:53] russell+php dot net at loosenut dot com Well, this effectively breaks relative directory includes, then... you can no longer write complex scripts that "know" their own directory structure, doing something like: include( "../include/db.inc" ); ..or similiar, since the "." b0rks the inclusion. IMO this is bad behaviour (and contrary to the way relative file pathing works in either the UN*X shell or the simply the web itself). ------------------------------------------------------------------------ [2003-04-21 09:55:18] sniper@php.net This is how it's supposed to work. ------------------------------------------------------------------------ [2003-04-19 21:48:09] russell+php dot net at loosenut dot com It would appear that "include" and "require" bork if you include a file with "./" -- however, excluding the dot-slash, the files are correctly included from the current directory or relative subdirectories. Previous versions of PHP (testing in 4.1.s) work just fine with identical scripts. According to "phpinfo();" run on the server in this same directory, I have: Directive: include_path Local Value: .:/usr/local/php-4.3.2rc1/lib/php Master Value: .:/usr/local/php-4.3.2rc1/lib/php Safe mode is also off. Test case: -- begin <HTML> <HEAD> <TITLE>PHP Test Case</TITLE> </HEAD> <BODY> <P> Testing: <?PHP // index.php print( "Including file:<BR>\n" ); include( "file.php" ); print( "Including file with dot-slash:<BR>\n" ); include( "./file.php" ); ?> </BODY> </HTML> -- end -- begin <?PHP // file.php print( "<B>File Successfully Included</B><BR>\n" ); ?> -- end ...if all goes well, you should see "File Successfully Included" twice -- however, it only shows up once and the second line shows an error in the error logs. Here are the error messages that the two above files generate (Apache 1.3.27): -- begin [Thu Apr 17 02:38:11 2003] [error] PHP Warning: main (./file.php) [<a href='http://www.php.net/function.main'>function.main</a>]: failed to open stream: No such file or directory in /export/home/russell/public_html/inc-problem/index.php on line 18 [Thu Apr 17 02:38:11 2003] [error] PHP Warning: main() [<a href='http://www.php.net/function.include'>function.include</a>]: Failed opening './file.php' for inclusion (include_path='.:/usr/local/php-4.3.2rc1/lib/php') in /export/home/russell/public_html/inc-problem/index.php on line 18 -- end ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=23282&edit=1

« previous php.bugs (#38037) next »