Избегайте необходимости dos2unix в php

1

Мы использовали для редактирования сценария полезной нагрузки через терминал на старом сервере.

Чтобы упростить и избежать опечаток, я хотел бы разработать скрипт php, который генерирует полезную нагрузку, сохраняет его в файл и использует встроенные функции FTP в PHP для загрузки файла на FTP-сервер и chmod скрипта до 755.

Но моя полезная нагрузка не особенно понравилась серверу. Он не работает.

#./payload.sh 
-sh: ./payload.sh: not found
#

Однако после выполнения простого dos2unix payload.sh все работает нормально.

#dos2unix payload.sh    
#./payload.sh 
[OK] running payload....
#

Как я могу автоматически лепить мой файл, чтобы избежать необходимости dos2unix это каждый раз? Я пробовал очевидный метод KISS:

$contents = str_replace("\r","",$contents);
$contents = trim($contents);

Не повезло. Сценарий все еще не работает.

Поэтому я заглянул в dos2unix.c и dos2unix.h и узнал, что это, казалось бы, не так просто, как я думал. Было 800 с лишним строк кода.

Есть ли более простые вещи, которые я могу сделать в PHP? FWIW, я должен признать, что на данный момент я использую файлы с ручным вводом, написанные в Sublime Text 2 на моем Mac. Я попытался "Сохранить с кодировкой"/"UTF-8" и выбрал "Unix" как "Line Endings".

  • 1
    system("dos2unix $script") работа выполнена. Хотя по общему признанию это не помогает понять почему. Можем ли мы увидеть первые несколько строк сценария оболочки?
  • 3
    Одним из способов преобразования концов строк в стиль Unix является использование режима передачи ascii в FTP-соединении. ftp_put($conn, $target, $source, FTP_ASCII);
Показать ещё 2 комментария
Теги:
dos2unix

1 ответ

0

Теперь я использую FTP_BINARY вместо FTP_ASCII. Работает сейчас. - EDP

Ещё вопросы

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