EmmyS
EmmyS

Reputation: 12138

File path in php require

I've inherited some code:

include('../cfg/db_setup.php');
require('./fpdf/fpdf.php');

I know that ../cfg means start in the current directory, then go up one level and down into the cfg dir. What does the ./fpdf mean? I've never seen a single dot slash used in a file path, and can't seem to find the fpdf directory anywhere on our server, but the code is working so apparently it's there somewhere.

Upvotes: 4

Views: 17475

Answers (4)

Francesco Terenzani
Francesco Terenzani

Reputation: 1391

Just a note.

Relative paths don't are relative to the current include_path.

Relative paths, such as . or ../ are relative to the current working directory. The working directory is different if you run a script on CGI or command line or if a script is included by another script in another directory.

Therefore theoretically is not possible to be sure where these paths are pointing to without to know the context :P

To be sure, if PHP < 5.3:

include(dirname(__FILE__) . '/../cfg/db_setup.php');
require(dirname(__FILE__) . '/fpdf/fpdf.php');

If PHP >= 5.3:

include(__DIR__ . '/../cfg/db_setup.php');
require(__DIR__ . '/fpdf/fpdf.php');

Upvotes: 22

Jeff Rupert
Jeff Rupert

Reputation: 4840

. is defined as the current folder.

So, if the PHP script is located at /path/to/script/, then the second statement will look for /path/to/script/fpdf/fpdf.php

Upvotes: 4

Leniency
Leniency

Reputation: 5024

./ is the current directory. ./fpdf/ should be on the same path as the including file, or somewhere on the off the php include_path.

Upvotes: 2

azat
azat

Reputation: 3565

./ - this means in the current path

Upvotes: 0

Related Questions