get current directory of symlink'd php script and not actual php script get current directory of symlink'd php script and not actual php script php php

get current directory of symlink'd php script and not actual php script


For Web Server requests

dirname($_SERVER['SCRIPT_FILENAME']) will give you what you need.

Failing that $_SERVER['PHP_SELF'] or even REQUEST_URI may have what you need, depending on your server configuration.

For CLI (command Line)

this won't work in cli (command line) scripts as $_SERVER is added by the web server.

Fortunately it's a lot easier with cli scripts (as there is no web server to mess about with things).

All you need is to read the command line that started the script: http://php.net/manual/en/reserved.variables.argv.php. The first argument $argv[0] is always the name that was used to run the script.


If you want to get the current path with symlink you can ask your host OS:

$path = exec('pwd');


If you are looking for the full unresolved system path of a cli script, SCRIPT_PATH will be insufficient.

php -f symlink/script.php

SCRIPT_FILENAME will contain symlink/script.php

I have created a php/gist that gets the unresolved path to the php file.

Here is the outcome of the function:

 $ php -f subdir/mysymlink/subdir/mysymlink/subdir/mysymlink/app.php PWD: /tmp/phpcode                                                                            SCRIPT_FILENAME: subdir/mysymlink/subdir/mysymlink/subdir/mysymlink/app.php                 ___FILE__ : /tmp/phpcode/app.php                                                              getSymlink(): /tmp/phpcode/subdir/mysymlink/subdir/mysymlink/subdir/mysymlink