ID: 9673
Updated by: stas
Reported By: [EMAIL PROTECTED]
Old-Status: Open
Status: Analyzed
Bug Type: Scripting Engine problem
Assigned To:
Comments:
First, PHP include() is in no way related or was promised to
relate to C preprocessor directives, so no wonder it behaves
differently.
Now, all relative pathes are resolved against the current
directory of the including script (which is the directory
where it's located). This is a known issue. Use
include_pathes in the meantime.
Previous Comments:
---------------------------------------------------------------------------
[2001-03-10 16:45:48] [EMAIL PROTECTED]
Here is an example of how relative paths are currently resolved with cascading
inclusions (command line is 'php /home/joe/a.php'):
File '/home/joe/a.php':
<?php
# this include works as expected,
# locating '/home/joe/include/b.inc'
include_once( 'include/b.inc' );
?>
File '/home/joe/include/b.inc':
<?php
# this include will assume '/home/joe/c.inc', but
# not '/home/joe/include/c.inc', as one may expect =(
include_once( 'c.inc' );
?>
File '/home/joe/include/c.inc':
<?php
echo 'hello';
?>
The way all four functions [require(), require_once(), include(), include_once()]
resolve relative paths is counter-intuitive and unproductive with large directory
structures, because some trickery is required to fix this problem. Not to mention that
it hurts to see a different behavior from C-preprocessor #include directives.
If you don't believe me, then see comments to the include() function...
---------------------------------------------------------------------------
ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=9673&edit=2
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]