Getcwd: примеры (PHP)
getcwd: string|falseФункция getcwd в PHP
getcwd() — встроенная функция языка PHP, предназначенная для получения абсолютного пути к текущему рабочему каталогу скрипта.
Функция применяется, когда требуется определить, в какой директории выполняется скрипт. Это полезно для построения относительных путей к файлам, проверки местоположения, логирования или динамического подключения ресурсов.
Функция getcwd() не принимает никаких параметров. Её вызов всегда производится без аргументов.
Примеры использования getcwd
Получение текущей рабочей директории.
<?php
// Вывод текущего каталога
echo getcwd();
?>/var/www/html/project
Проверка директории перед выполнением операции.
<?php
$currentDir = getcwd();
if (str_contains($currentDir, 'project')) {
echo 'Скрипт выполняется в проекте.';
}
?>Скрипт выполняется в проекте.
Похожие функции в PHP
Магическая константа, возвращающая директорию файла, в котором она используется. В отличие от getcwd(), её значение не изменяется при смене рабочего каталога функциями вроде chdir().
Конструкция, аналогичная __DIR__, используется в более старых версиях PHP.
Функция realpath() с аргументом точка возвращает канонизированный абсолютный путь к текущей директории. Она разрешает символьные ссылки и переходы типа '..'.
getcwd() применяют для получения текущего контекста выполнения. __DIR__ актуальна для получения пути конкретного файла. realpath('.') полезна для получения абсолютного пути без символических ссылок.
Типичные ошибки
В редких случаях, если нет прав на чтение текущего каталога, функция вернет false.
<?php
$dir = getcwd();
if ($dir === false) {
echo 'Не удалось определить директорию.';
}
?>Не удалось определить директорию.
Результат функции актуален только на момент вызова. Последующая смена каталога через chdir() делает сохраненное значение устаревшим.
<?php
$oldCwd = getcwd();
chdir('/tmp');
echo 'Было: ' . $oldCwd . '<br>';
echo 'Стало: ' . getcwd();
?>Было: /var/www/html Стало: /tmp
Изменения в версиях PHP
Функция getcwd() не претерпела значимых изменений в поведении в последних основных версиях PHP, включая PHP 8.x. Она остается стабильной и обратно совместимой.
Расширенные примеры
Добавление информации о директории в логи.
<?php
function logMessage($message) {
$logEntry = '[' . date('Y-m-d H:i:s') . '] [' . getcwd() . '] ' . $message . PHP_EOL;
file_put_contents('app.log', $logEntry, FILE_APPEND);
}
logMessage('Скрипт запущен.');
?>Создание абсолютного пути к файлу относительно текущей директории.
<?php
$configPath = getcwd() . '/config/settings.json';
echo 'Путь к конфигурации: ' . $configPath;
?>Путь к конфигурации: /var/www/html/project/config/settings.json
Определение, выполняется ли скрипт из определенного места.
<?php
$cwd = getcwd();
$allowedPaths = ['/var/www/prod', '/var/www/staging'];
if (!in_array($cwd, $allowedPaths)) {
die('Запуск разрешен только из определенных директорий.');
}
?>Использование с итератором для обработки файлов в текущем каталоге.
<?php
$iterator = new FilesystemIterator(getcwd());
foreach ($iterator as $fileInfo) {
echo $fileInfo->getFilename() . '<br>';
}
?>index.php composer.json README.md
В командной строке результат зависит от директории вызова.
// script.php
<?php
echo 'Текущая директория: ' . getcwd();
?># Вызов из терминала
$ cd /home/user
$ php /path/to/script.phpТекущая директория: /home/user
Аналоги в других языках
Функция модуля os выполняет ту же роль.
import os
print(os.getcwd())/home/user/project
Метод объекта process.
console.log(process.cwd());/home/user/project
Команда выводит текущую рабочую директорию.
pwd/home/user/project
В Python и Node.js это метод модуля или объекта, а в PHP — глобальная функция. Поведение в целом идентично, но стоит учитывать контекст выполнения (например, в веб-сервере vs CLI).