Tuesday, November 9, 2010

10:17 PM
3
I think you guyz must be aware of absolute path and relative path in PHP. If you do not know anything about it then let me explain you about absolute path and relative path in the server with the example using include() function of PHP. You can see the example below, I’ve included the same files in PHP but the same file is included in two different manner.
 include("/home/example/public_html/config.php"); //absolute path
  include("config.php"); //relative path


As you can see that in the first line, config.php file is included using absolute path in which is full path of the file in the server. The next line uses relative path file inclusion.

Well I’ve been using the relative path inclusion in the beginning of my career and I’ve faced some serious problem in a project.Since the config.php has be be included inside many files, I’ve give the various paths from the various folders which should be relative to the root folder and which was quite hectic.

So what is the solution. The solution is to use absolute path file inclusion.Absolute path of the file is always same no matter from which folder you include that file in server.

How to get absolute Path in PHP?? The absolute path of your local server and the real server might be different. So to get the absolute path for both version, you can take the help of the magic constant called __FILE__ and dirname() function available in PHP.

Use the following line in the file of the that folder which contains the file which is to be included sitewise.
define(‘ABSPATH’, dirname(__FILE__).’/');

The __FILE__ returns the full path and filename of the file.Now we are concerned with directory only which is accomplished by dirname() which returns directory name component of path.

Now let us suppose that settings.php file has to be included in many files of the site then you can use following statementto do this.
require_once(ABSPATH.’wp-settings.php’);

3 comments:

Guvenc Kaplan said...

Maybe it is better to leave the definition as:

define(‘ABSPATH’, dirname(__FILE__));

and add the slash manually when needed, depending on the operating system, as windows expects a "\" while unix expects a "/".

Linux:

require_once(ABSPATH.’/wp-settings.php’);

Windows:
require_once(ABSPATH.’\wp-settings.php’);

Sjoerd Maessen said...

Just a quick tip, since PHP 5.3 a constant is added: __DIR__ this constant replaces the of dirname(__FILE__);

So if you have PHP 5.3 installed use __DIR__.

Brent Wong said...

RE the types of slashes

It shouldn't matter to windows if you use the forward slash. Although, if you want to be a stickler about it, you can always use the "DIRECTORY_SEPARATOR" constant.

require_once(ABSPATH . DIRECTORY_SEPARATOR . 'wp-settings.php');