2010-05-13 3 views
1

Я пытаюсь получить права на каталог с помощью команды «STAT» FTP, как это:Получения разрешений справочника через FTP

$directory_list = ftp_raw($conn_id,'STAT '.$path); 

Вышеуказанных списков команд всего содержимого каталога, включая файлы и подкаталоги. Я тогда поиск возвращаемого массива данных для каталога мне нужно проверить, и получить что-то вроде:

drwxr-xr-x 3 user group  77824 May 13 10:15 Targetdir 

Это позволит мне разобрать drwxr-хт-х строку, чтобы узнать, что CHMOD из TargetDir является 0755 .

Проблема в том, что содержащая директория имеет 5000 файлов. A) Требуется очень много времени, и B) функция ftp_raw возвращает пустой массив 1 в 10 прогонов. Я не знаю, будет ли это тайм-аут или в чем проблема.

Есть ли лучший способ найти права доступа к каталогу? Есть ли способ ограничить количество восстановленных полей в команде «STAT»? Мне действительно нужно только 5 лучших, не нужно для других 4995 файлов.

Кто-нибудь знает, почему моя команда НЕ запускалась в течение 100% времени? Почему это сломается? Я даже не могу воспроизвести свою ошибку, это происходит случайным образом.

ответ

1

См. Пример ftp_exec в руководстве. Вы можете создать список файлов таким образом, а затем загрузить его и проанализировать.

ftp_exec($conn_id, 'ls -al >files.txt'); 

или, если вы знаете имя каталога и холост один:

ftp_exec($conn_id, 'ls -ld '.$DIRECTORY.' >permissions.txt'); 

Если у вас нет разрешения EXEC попробовать:

ftp_nlist ($conn, "-ld ".$DIRECTORY); 
+0

Я бы предположить, что EXEC является не широко поддерживается или не поддерживается, поскольку я могу представить себе кошмар безопасности с этой командой. – Krumelur

+0

, как упоминал Крумелур, на наших машинах отключен EXEC. Любым другим путем ? – Gotys

+2

Попробуйте ftp_nlist ($ conn, "-ld". $ DIRECTORY); –