Я пытаюсь загрузить файл с веб-PHP на сервер оболочки и запустить его с помощью этой команды (phpseclib)
$sftp->put("$upload", "$imageupload", NET_SFTP_LOCAL_FILE)
Он уже загружен, но имеет файл ^M
в файле
Это мой файл перед загрузкой на сервер
12345
67890
Тогда это файл с сервера оболочки
12345 ^ M
67890 ^ M
Что мне делать с этой проблемой? У вас есть способ использовать sftp->put
и у него нет ^M
?
Вы загружаете текстовый файл в формате Windows на сервер Unix.
Некоторые приложения Unix не могут иметь дело с окончанием строки в стиле Windows.
Проблема обычно разрешается с использованием передачи текстового режима. Но в то время как передача текстового режима широко поддерживается FTP-клиентами и серверами, он поддерживается несколькими клиентами и серверами SFTP. Это определенно не поддерживается phpseclib. Phpseclib поддерживает только протокол SFTP версии 3. И текстовый режим поддерживается только с использованием протокола SFTP версии 4.
Поэтому вам нужно преобразовать файл в формат Unix непосредственно перед загрузкой.
Для преобразования в PHP см., Например: как преобразовать текстовый файл из DOS в конец строки Unix?
Дополнительные сведения см. Также в моей статье. Почему строка текстового файла не работает после того, как файл был передан или отредактирован?
sftp
клиента, который бы позволял этот выбор.