Когда я когда-либо пытаюсь выполнить команду в оболочке через функции php exec/passthru/system, кажется, что кавычки удаляются из команды.
$str_file = '1323988284_700.csv';
exec("/usr/bin/lftp -e 'set ftp:passive-mode true; set ftp:ssl-protect-data yes; put /web/files/{$str_file}; bye;' -u user,pass ftp://ftp.site.com/uploaddir/");
Вот результат проверки процесса
ps faxxx | grep lftp
4486 ? S 0:00 | \_ /usr/bin/lftp -e set ftp:passive-mode true; set ftp:ssl-protect-data yes; put /web/files/1323988284_700.csv; bye; -u user,pass ftp://ftp.site.com/uploaddir/
Как вы можете видеть, он показывает процесс, работающий без одинарных кавычек. Это приводит к ошибке lftp.
Теперь он просто зависает, пока я его не убью, я полагаю, это потому, что если я наберу то, что показано в списке процессов, в команду, например, произойдет ошибка и вы останетесь в оболочке lftp.
Безопасный режим PHP выключен
Я пробовал следующее для цитаты
\'
\\'
\\\'
\\\\'
''
'''
''''
ОБНОВИТЬ
Я хотел бы добавить это при дальнейшем тестировании. Если я создам сценарий оболочки (run_ftp.sh) и запущу его через php, он также удалит кавычки из run_ftp.sh.. так что это заставляет меня думать, что это НЕ php, вызывающий проблема.
SELinux выключен. Существуют ли какие-либо другие меры безопасности в linux/bash, которые могут вызвать это?