получить текущий каталог symlink'd php script, а не фактический скрипт php

У меня есть сценарий, который символически привязан из одной папки к другой

/var/www/default/index.php 

который символически связан с

 /var/www/mysite/index.php 

Однако, когда я вызываю DIR из mysite, путь разрешает исходный путь по умолчанию. Как заставить его вернуть путь mysite (символическая папка, а не фактическая папка)

    Для запросов веб-сервера

    dirname ($ _ SERVER ['SCRIPT_FILENAME']) даст вам то, что вам нужно. В противном случае это будет $ _SERVER ['PHP_SELF'] или даже REQUEST_URI.

    Для командной строки (командной строки)

    это не будет работать в сценариях cli (командной строки), поскольку веб-сервер добавляет $ _SERVER.

    К счастью, это намного проще с помощью скриптов cli (так как нет веб-сервера, с которым можно пообщаться).

    Все, что вам нужно, это прочитать командную строку, которая запустила скрипт: http://php.net/manual/en/reserved.variables.argv.php . Первый аргумент $ argv [0] всегда является именем, которое использовалось для запуска скрипта.

    Если вы ищете полный неразрешенный системный путь для скрипта cli, SCRIPT_PATH будет недостаточно.

     php -f symlink/script.php 

    SCRIPT_FILENAME будет содержать symlink / script.php

    Я создал php / gist, который получает неразрешенный путь к файлу php.

    Вот результат функции:

      $ 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