Разница между getcwd() и __DIR__ в PHP
-
__DIR__
- глобальная константа доступная с PHP 5.3, содержит абсолютный путь к директории (папке) файла, в которой используется эта константа. - getcwd() - получает путь директории (папки) текущего выполняемого скрипта (из какой папки начал выполняться PHP процесс).
Рассмотрим на примере
У нас есть такая структура фалов:
folder/ foo.php bar/ bar.php
Код folder/foo.php
:
<?php var_dump( getcwd() ); var_dump( __DIR__ ); include 'bar/bar.php';
Код folder/bar/bar.php
:
<?php var_dump( getcwd() ); var_dump( __DIR__ );
Теперь, запустим файл foo.php
по-разному:
Из папки /var/www/html
:
kama@kama:/var/www/html $ php folder/foo.php string(13) "/var/www/html" string(20) "/var/www/html/folder" string(13) "/var/www/html" string(24) "/var/www/html/folder/bar"
Из папки /var/www/html/folder
:
kama@kama:/var/www/html/folder $ php foo.php string(20) "/var/www/html/folder" string(20) "/var/www/html/folder" string(20) "/var/www/html/folder" string(24) "/var/www/html/folder/bar"
Как мы видим getcwd()
возвращает каталог из которого PHP скрипт был запущен, тогда как __DIR__
всегда содержит путь до папки в которой находится файл.
Для WordPress getcwd()
почти всегда будет возвращать путь до папки, где лежит основной файл index.php
.
Исключения будут для админки, когда ядро WP перенесено в другую папку.