views:

293

answers:

1

The structure for the current project I am working on is something like:

  • root/index.php
  • root/includes/php/first.php
  • root/includes/php/functions.php

So index.php includes first.php:

<?php include_once("includes/php/first.php"); ?>

Normally then my first.php would call functions like:

<?php include_once("includes/php/functions.php"); ?>

Assuming the relative would still be from the index page however when moving to a new server it didn't work. I tried making the relative path from first.php:

include_once("functions.php");

And this seems to work now.

Which would normally be the correct way to do this? I want to roll this project out so just about anyone would be able to install this.

+4  A: 

includes are relative to the file doing the including. If you really want to make sure and avoid any ambiguity, you could do this:

include dirname(__FILE__) . "/functions.php";
nickf
Awesome thanks! Not sure why it worked before the other way but this solution will solve future issues
kilrizzy
+1 - I was going to suggest using the `$_SERVER['SCRIPT_FILENAME']` element to do the same, but this is much better.
Atli
I tend to create a couple of definations for my PHP app's and store my root_path and web_path there for use throughout
Andi