Разница между 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 перенесено в другую папку.