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

From: Date: Tue, 22 Apr 2003 08:10:19 +0000
Subject: #23282 [Bgs]: include and require break with "./"
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-38049@lists.php.net to get a copy of this message
ID: 23282 User updated by: russell+php dot net at loosenut dot com Reported By: russell+php dot net at loosenut dot com Status: Bogus Bug Type: Scripting Engine problem Operating System: Solaris PHP Version: 4.3.2RC1 New Comment: Well, the "this is how it's supposed to work" was a tad unclear. Is there something else I can provide that could help you figure out what was happening? This is basically a "straight out of the box configuration" and, as I said, swapping back to an older version of PHP "works just fine." On this server, I'm using the packaged "php.ini-recommended" file, only slightly modified: -- begin % diff -c php.ini php.ini-recommended *** php.ini Mon Apr 7 03:30:42 2003 --- php.ini-recommended Sun Mar 2 17:31:48 2003 *************** *** 229,236 **** ; (e.g. by adding its signature to the Web server header). It is no security ; threat in any way, but it makes it possible to determine whether you use PHP ; on your server or not. ! ;expose_php = On ! expose_php = Off ;;;;;;;;;;;;;;;;;;; --- 229,235 ---- ; (e.g. by adding its signature to the Web server header). It is no security ; threat in any way, but it makes it possible to determine whether you use PHP ; on your server or not. ! expose_php = On ;;;;;;;;;;;;;;;;;;; -- end Previous Comments: ------------------------------------------------------------------------ [2003-04-22 00:59:32] rasmus@php.net 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. ------------------------------------------------------------------------ [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 (#38049) next »