Целью является использование php для FTP на сервере и получение списков каталогов. Единственная проблема заключается в том, что мне нужно использовать абсолютный путь для доступа к каталогу.PHP ftp-функции не будут использовать абсолютные пути
Пример:
$host = "example.com";
$port = 21;
$connection = ftp_connect($host, $port);
ftp_login($connection, "userA", "password");
ftp_pasv($connection, true);
//user's home directory is /home/userA
print_r(ftp_nlist($connection, "logs")); //works as intended
print_r(ftp_nlist($connection, "/home/userA/logs")); //does not work
Действительно запутанная часть является то, что с помощью функций файловой системы с сервером FTP дает мне точную проблему напротив:
opendir("ftp://userA:[email protected]:21/home/userA/logs"); //works
opendir("ftp://userA:[email protected]:21/logs"); //does not work
Поскольку пользователь/каталог введенная пользователь, я не обязательно буду знать, хотят ли они использовать абсолютный или относительный (домашний каталог) путь. Я мог бы использовать простую strstr, чтобы проверить, является ли первый символ в пути «/» и выбирает, с каким способом идти, но тогда я бы в итоге написал вдвое больше кода.
Должен быть более простой способ получить некоторый метод для работы как с абсолютными, так и с относительными путями. Я надеюсь, что это просто, что я просто не замечаю.
Thanks
Это звучит как проблема с вашим FTP-сервером. Я попробовал это на пару серверов, к которым у меня есть доступ, и он отлично работал в любом случае. Вы можете проверить введенный пользователем путь и посмотреть, начинается ли он с текущего каталога ('ftp_pwd ($ connection)')? Если это так, удалите начало пути. – mcrumley
'ftp_pwd ($ connection)' возвращает "/" только. Я ожидал возвращения «/ home/userA». Я не могу придумать другой способ найти домашний каталог пользователя по умолчанию через ftp. По общему признанию, я не администратор сервера. У меня также нет доступа к изменению чего-либо на ftp-сервере и, к сожалению, у меня есть только этот тест. – user1052474
К сожалению, я не нашел хорошего решения, поэтому я написал два класса: один для абсолютных путей и один для относительных путей. – user1052474