FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Why does relative include fail?
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: Why does relative include fail? [message #174456 is a reply to message #174448] Sun, 12 June 2011 20:02 Go to previous messageGo to previous message
Mathieu Maes is currently offline  Mathieu Maes
Messages: 5
Registered: May 2011
Karma:
Junior Member
On 12 jun, 03:00, Disc Magnet <discmag...@gmail.com> wrote:
>     disc@puff:~/php$ ls
>     a.php  data  include
>
>     disc@puff:~/php$ tree
>     .
>     ├── a.php
>     ├── data
>     │   └── d.php
>     └── include
>         ├── b.php
>         └── c.php
>
>     2 directories, 4 files
>
>     disc@puff:~/php$ cat a.php
>     a.php is including include/b.php ...
>     <?php include "include/b.php" ?>
>
>     disc@puff:~/php$ cat include/b.php
>     b.php is including c.php and ../data/d.php ...
>     <?php include "c.php" ?>
>     <?php include "../data/d.php" ?>
>
>     disc@puff:~/php$ cat include/c.php
>     c.php
>
>     disc@puff:~/php$ cat data/d.php
>     d.php
>
>     disc@puff:~/php$ php a.php
>     a.php is including include/b.php ...
>     b.php is including c.php and ../data/d.php ...
>     c.php
>     PHP Warning:  include(../data/d.php): failed to open stream: No
> such file or directory in /home/disc/php/include/b.php on line 3
>     PHP Warning:  include(): Failed opening '../data/d.php' for
> inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/
> disc/php/include/b.php on line 3
>     disc@puff:~/php$
>
> Why does `include "c.php"` succeed but `include "../data/d.php"` fail?
>
> http://www.php.net/manual/en/function.include.phpmentions: "If a path
> is defined — whether absolute (starting with a drive letter or \ on
> Windows, or / on Unix/Linux systems) or relative to the current
> directory (starting with . or ..) — the include_path will be ignored
> altogether. For example, if a filename begins with ../, the parser
> will look in the parent directory to find the requested file. "
>
> Parent directory of what?

Dear Disc Magnet,

Includes are always relative to the "parent" file that is including,
even when the include file is also including other files.

In your example, the correct include paths for b.php are as follows:
<?php include "include/c.php" ?>
<?php include "data/d.php" ?>

Kind regards,
Mathew
[Message index]
 
Read Message
Read Message
Read Message
Previous Topic: test vps (hosting) performance
Next Topic: variable value gets lost
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Thu Nov 28 16:59:37 GMT 2024

Total time taken to generate the page: 0.04539 seconds