У меня есть ссылка, где я видел ссылку на изменение атрибутов по умолчанию и установку необходимых режим для передачи набора данных через SFTP.
Вот как это..
sftp> ls /+mode=text,lrecl=80,recfm=fb
Здесь мы меняем режим на текстовый (где по умолчанию используется режим binary
).
Когда я выполняю это через командную строку, она работает нормально и дает тот же ответ, что означает, что команда выполнена отлично!
(Ответ после выполнения в командной строке)
sftp> ls /+mode=text,lrecl=80,recfm=fb
/+mode=text,lrecl=80,recfm=fb
Но если я попытаюсь использовать то же самое через код PHP, он выдаст мне ошибку, как
ls: FSUM6785 Файл или каталог "/+mode=text,lrecl=80,recfm=fb" не найден
Вот как я использовал библиотеку phpseclib:
define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX);
$user = 'username';
$host = 'host';
$key = new Crypt_RSA();
$key->loadKey(file_get_contents('file.ppk'));
$sftp = new Net_SFTP($host);
if ($sftp->login($user,$key)) {
echo $sftp->exec('ls /+mode=text,lrecl=80,recfm=fb');
} else {
return false;
}
В приведенном выше примере, если я пытаюсь использовать $sftp->exec('ls -la');
и $sftp->exec('pwd');
, он дает мне список существующих каталогов и текущий каталог соответственно. Это означает, что соединение SFTP в порядке, и команда exec
работает.
Но то же самое выдает ошибку, когда я использую команды ls /+mode=text,lrecl=80,recfm=fb
, как указано выше.
Есть ли что-то еще, что нужно настроить, чтобы эти /+mode=text.....
команды работали?