W3docs

ftp_pwd()

Функция ftp_pwd() возвращает текущий каталог FTP-соединения. Подробное описание синтаксиса и примеры использования.

Функция PHP ftp_pwd() возвращает текущий рабочий каталог открытого FTP-соединения — это эквивалент команды pwd («print working directory») в FTP-клиенте. На этой странице объясняется, что возвращает функция, как правильно её вызывать в разных версиях PHP и как она вписывается в типичный сеанс работы с FTP.

Что делает ftp_pwd()

После подключения и входа на FTP-сервер сервер отслеживает «текущий каталог» для вашего сеанса. По мере перемещения с помощью ftp_chdir() или ftp_cdup() это местоположение меняется. ftp_pwd() сообщает, где вы находитесь в данный момент, возвращая абсолютный путь в виде string.

Это особенно полезно для:

  • Логирования и отладки — чтобы убедиться, что вы попали в нужный каталог после входа.
  • Сохранения и восстановления местоположения: запишите путь с помощью ftp_pwd(), перейдите в другой каталог для выполнения работы, затем вернитесь с помощью ftp_chdir().
  • Формирования путей для загрузки/выгрузки файлов относительно текущего расположения на сервере.

Синтаксис

ftp_pwd(FTP\Connection $ftp): string|false

Функция принимает единственный аргумент:

При успешном выполнении возвращает текущий каталог в виде string, при ошибке — false.

Примечание о версиях: В PHP 8.1 и выше соединение представлено объектом FTP\Connection. В PHP 7.x и более ранних версиях FTP-функции использовали resource — код вызова идентичен, изменился лишь тип $ftp. Код, написанный для старых версий, продолжает работать без изменений.

Базовое использование

Перед вызовом ftp_pwd() необходимо установить соединение и выполнить вход:

<?php

// Open an FTP connection
$ftp = ftp_connect('ftp.example.com');

// Log in with your credentials
ftp_login($ftp, 'username', 'password');

// Ask the server where we are
$current = ftp_pwd($ftp);

echo "Current directory: $current\n"; // e.g. "Current directory: /"

// Always close the connection when done
ftp_close($ftp);

Сразу после входа большинство серверов помещают вас в домашний каталог учётной записи, поэтому первый вызов ftp_pwd() обычно возвращает / или что-то вроде /home/username.

Отслеживание местоположения при смене каталогов

Значение, возвращаемое ftp_pwd(), отражает каждый шаг навигации. В сочетании с ftp_chdir() это позволяет убедиться, что переход выполнен успешно:

<?php

$ftp = ftp_connect('ftp.example.com');
ftp_login($ftp, 'username', 'password');

echo ftp_pwd($ftp) . "\n";        // /

ftp_chdir($ftp, 'public_html');
echo ftp_pwd($ftp) . "\n";        // /public_html

ftp_chdir($ftp, 'images');
echo ftp_pwd($ftp) . "\n";        // /public_html/images

ftp_close($ftp);

Сохранение и восстановление рабочего каталога

Распространённый паттерн — запомнить текущее местоположение, выполнить работу в другом месте, а затем вернуться:

<?php

$ftp = ftp_connect('ftp.example.com');
ftp_login($ftp, 'username', 'password');

// Remember the starting point
$home = ftp_pwd($ftp);

// Move into a subfolder and upload a file
ftp_chdir($ftp, 'uploads');
ftp_put($ftp, 'report.pdf', '/tmp/report.pdf', FTP_BINARY);

// Go back to where we started
ftp_chdir($ftp, $home);

ftp_close($ftp);

Обработка ошибок

ftp_pwd() возвращает false, если соединение недействительно или сервер отклонил запрос. Поскольку пустая string также является ложным значением, используйте строгую проверку === false вместо !$current:

<?php

$ftp = ftp_connect('ftp.example.com');
ftp_login($ftp, 'username', 'password');

$current = ftp_pwd($ftp);

if ($current === false) {
    echo "Failed to get the current directory.\n";
} else {
    echo "You are in: $current\n";
}

ftp_close($ftp);

Обратите внимание, что ftp_connect() сама возвращает false, если не может достичь хоста, поэтому в рабочем коде следует проверять результаты подключения и входа перед вызовом ftp_pwd().

Связанные функции

  • ftp_connect() — открыть FTP-соединение.
  • ftp_login() — аутентификация на сервере.
  • ftp_chdir() — сменить текущий каталог.
  • ftp_cdup() — перейти в родительский каталог.
  • ftp_close() — закрыть соединение.
  • Обзор PHP FTP — все FTP-функции на одной странице.

Практика

Практика
Какова роль функции ftp_pwd в PHP?
Какова роль функции ftp_pwd в PHP?
Was this page helpful?