#23282 [Opn->Bgs]: include and require break with "./"
| From: | rasmus@php.net | 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