How do you include a file that is more than 2 directories back. I know you can use ../index.php
to include a file that is 2 directories back, but how do you do it for 3 directories back?
Does this make sense?
I tried .../index.php
but it isn't working.
I have a file in /game/forum/files/index.php
and it uses PHP include to include a file. Which is located in /includes/boot.inc.php
; /
being the root directory.
../
is one directory, Repeat for two directories../../
or even three:../../../
and so on.Defining constants may reduce confusion because you will drill forward into directories verses backwards
You could define some constants like so:
When using 'BD' or my 'base directory' it looks like so:
define(); reference
..
selects the parent directory from the current. Of course, this can be chained:This would be two directories up.
if you are using php7 you can use dirname function with level parameter of 2, for example :
the second parameter "2" indicate how many level up
dirname referance
if you include the
/
at the start of the include, the include will be taken as the path from the root of the site.if your site is http://www.example.com/game/forum/files/index.php you can add an include to /includes/boot.inc.php which would resolve to http://www.example.com/includes/boot.inc.php .
You have to be careful with
..
traversal as some web servers have it disabled; it also causes problems when you want to move your site to a new machine/host and the structure is a little different.But be VERY careful about letting a user select the file. You don't really want to allow them to get a file called, for example,
or other sensitive system files.
(Sorry, it's been a while since I was a linux sysadmin, and I think this is a sensitive file, from what I remember)