Передача SFTP в ^ M в загруженном файле

0

Я пытаюсь загрузить файл с веб-PHP на сервер оболочки и запустить его с помощью этой команды (phpseclib)

$sftp->put("$upload", "$imageupload", NET_SFTP_LOCAL_FILE)

Он уже загружен, но имеет файл ^M в файле

Это мой файл перед загрузкой на сервер

12345

67890

Тогда это файл с сервера оболочки

12345 ^ M

67890 ^ M

Что мне делать с этой проблемой? У вас есть способ использовать sftp->put и у него нет ^M?

  • 0
    FTP- клиенты обычно имеют настройку для двоичного файла вместо ascii, но я не видел sftp клиента, который бы позволял этот выбор.
  • 0
    Я полагаю, вы загружаете файл, созданный на ПК с Windows, на сервер Linux и видите символ возврата каретки. Проверьте это: stackoverflow.com/questions/5843495/…
Теги:
ssh
phpseclib
sftp

1 ответ

3
Лучший ответ

Вы загружаете текстовый файл в формате Windows на сервер Unix.

Некоторые приложения Unix не могут иметь дело с окончанием строки в стиле Windows.

Проблема обычно разрешается с использованием передачи текстового режима. Но в то время как передача текстового режима широко поддерживается FTP-клиентами и серверами, он поддерживается несколькими клиентами и серверами SFTP. Это определенно не поддерживается phpseclib. Phpseclib поддерживает только протокол SFTP версии 3. И текстовый режим поддерживается только с использованием протокола SFTP версии 4.

Поэтому вам нужно преобразовать файл в формат Unix непосредственно перед загрузкой.

Для преобразования в PHP см., Например: как преобразовать текстовый файл из DOS в конец строки Unix?

Дополнительные сведения см. Также в моей статье. Почему строка текстового файла не работает после того, как файл был передан или отредактирован?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню