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

From: Date: Mon, 21 Apr 2003 18:20:53 +0000
Subject: #23282 [Bgs]: include and require break with "./"
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-38014@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, 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).


Previous Comments:
------------------------------------------------------------------------

[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



Thread (8 messages)

« previous php.bugs (#38014) next »