Когда я пытаюсь выполнить команду для оболочки через exec / passthru / system функции php, она, похоже, удаляет кавычки из команды.
$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.
Теперь он просто зависает до тех пор, пока я не убью его, я верю, что это потому, что если я введу в команду то, что показано в списке процессов, то это приведет к ошибке и оставит вас в lftpshell.
PHP Safemode выключен
Я попробовал следующее для цитаты
\'
\\'
\\\'
\\\\'
''
'''
''''
UPDATE
I 'Я хотел бы добавить это при дальнейшем тестировании ... если я создаю сценарий оболочки (run_ftp.sh) и запускаю его через php, он также удаляет кавычки из run_ftp.sh .., так что это заставляет меня думать, что это не php, вызывающий проблему.
SELinux выключен .. Существуют ли какие-либо другие меры безопасности, которые применяются в linux / bash, которые могут вызвать это?