Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.php > #2127

Re: Why does relative include fail?

From Jerry Stuckle <jstucklex@attglobal.net>
Newsgroups comp.lang.php
Subject Re: Why does relative include fail?
Date 2011-06-12 17:12 -0400
Organization A noiseless patient Spider
Message-ID <it3a4u$7m9$3@dont-email.me> (permalink)
References <77eb4c0e-96e9-47eb-b1ae-25eb4eab4bdf@r27g2000prr.googlegroups.com>

Show all headers | View raw


On 6/11/2011 9:00 PM, Disc Magnet 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.php mentions: "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?

In addition to what Mathieu said, a better way is to always use paths 
relative $_SERVER['DOCUMENT_ROOT'].  This will end up as an absolute 
path on the server, but always relative the same point - the document 
root specified in your server configuration.

-- 
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

Back to comp.lang.php | Previous | Next — Previous in thread | Find similar | Unroll thread


Thread

Why does relative include fail? Disc Magnet <discmagnet@gmail.com> - 2011-06-11 18:00 -0700
  Re: Why does relative include fail? Mathieu Maes <mathieu@webberig.be> - 2011-06-12 13:02 -0700
  Re: Why does relative include fail? Jerry Stuckle <jstucklex@attglobal.net> - 2011-06-12 17:12 -0400

csiph-web