1

Getcwd: примеры (PHP)

Использование 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

__DIR__

Магическая константа, возвращающая директорию файла, в котором она используется. В отличие от getcwd(), её значение не изменяется при смене рабочего каталога функциями вроде chdir().

dirname(__FILE__)

Конструкция, аналогичная __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
<?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
<?php
$configPath = getcwd() . '/config/settings.json';
echo 'Путь к конфигурации: ' . $configPath;
?>
Путь к конфигурации: /var/www/html/project/config/settings.json
Проверка окружения

Определение, выполняется ли скрипт из определенного места.

Пример php
<?php
$cwd = getcwd();
$allowedPaths = ['/var/www/prod', '/var/www/staging'];
if (!in_array($cwd, $allowedPaths)) {
    die('Запуск разрешен только из определенных директорий.');
}
?>
Интеграция с SPL

Использование с итератором для обработки файлов в текущем каталоге.

Пример php
<?php
$iterator = new FilesystemIterator(getcwd());
foreach ($iterator as $fileInfo) {
    echo $fileInfo->getFilename() . '<br>';
}
?>
index.php
composer.json
README.md
В CLI-скриптах

В командной строке результат зависит от директории вызова.

Пример php
// script.php
<?php
echo 'Текущая директория: ' . getcwd();
?>
Пример php
# Вызов из терминала
$ cd /home/user
$ php /path/to/script.php
Текущая директория: /home/user

Аналоги в других языках

Python: os.getcwd()

Функция модуля os выполняет ту же роль.

import os
print(os.getcwd())
/home/user/project
JavaScript (Node.js): process.cwd()

Метод объекта process.

console.log(process.cwd());
/home/user/project
Bash/Shell: pwd

Команда выводит текущую рабочую директорию.

pwd
/home/user/project
Отличия от PHP

В Python и Node.js это метод модуля или объекта, а в PHP — глобальная функция. Поведение в целом идентично, но стоит учитывать контекст выполнения (например, в веб-сервере vs CLI).

PHP getcwd function comments

En
Getcwd Gets the current working directory