Проблема с квадратными скобками в путях при работе по FTP

miklr5479

Новичок
Хочу поучить список файлов в директории, успешно его получаю через
PHP:
ftp_rawlist($conn_id,$path)
. Но, как только в строке $path появляются квадратные скобки - '[' или ']', корректный ответ уже не получаю. Интересует, как нужно экранировать эти скобки (или, что ещё нужно делать, если это возможно)? (php 5.3)
Причем, при $path = /path/[ (где path - существующий путь, а [ - существующая папка, слеша в конце нет), получаю список из одной директории - этой ([), хотя её там точно не должно быть.
PS: Вариант с переименованием известен, как и с символьными ссылками (проблематично, т. к. много таких папок и нарушит работу других программ). Аналогично известен вариант с использованием curl.
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
Возьми любой ftp клиент, который работает с такими папками с этим сервером, и посмотри, что он отправляет
 

miklr5479

Новичок
Так не отображает список файлов уже для любой директории.

Возьми любой ftp клиент, который работает с такими папками с этим сервером, и посмотри, что он отправляет
Уже брал. Там все без экранирования и хорошо работает (FileZilla). И через ftp_raw тоже. Но, такой подход - это альтернатива curl, т. е. писать свой обработчик ответов сервера. Как понимаю, дело в неверной интерпретации этих скобок ftp_rawlist, которую, по идее, достаточно просто исправить.

Пока единственное решение - комбинация:

PHP:
ftp_raw($fp, "CWD /dir/[");
ftp_rawlist($fp, '');
Интересует вариант, меньше похожий на 'костыль'.
 

fixxxer

К.О.
Партнер клуба
miklr5479, ну так возьми файлзиллу и свой скрипт, и посмотри tcpdump-ом или wireshark-ом в чем разница.
 

AmdY

Пью пиво
Команда форума
fixxxer, там же вроде в консоль сразу пишется, не надо посторонних тулз.
 

fixxxer

К.О.
Партнер клуба
Сниффером надежнее, в консоль может писаться что угодно :)

Ну и у меня больше сомнений в реализации php-шного ftp расширения, чем в файлзилле, ага.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
а почему бы просто не работать через курл?
 

AmdY

Пью пиво
Команда форума
скорее всего экранировать надо через urlencode
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
ftp://ftp.funet.fi/pub/standards/RFC/rfc959.txt
ftp://ftp.funet.fi/pub/doc/rfc/rfc1738.txt

Pathname is defined to be the character string which must be input to a file system by a user in order to identify a file.
Pathname normally contains device and/or directory names, and file name specification. FTP does not yet specify a standard pathname convention. Each user must follow the file naming conventions of the file systems involved in the transfer.
если передавать сырые команды - путь надо писать так, как этого ждет удаленная система,
если писать ссылку для клиента - надо писать в формате URL
 
Последнее редактирование:
Сверху