Rsync работает нормально мыслительный терминал, но не с php exec

У меня это работает нормально в терминале

rsync --info=progress2,stats source destion | stdbuf -oL awk 'BEGIN { RS="\r" } /%/ { print $2 }' > /temp/progress.txt

но когда я пытаюсь переместить его в PHP Exec, я сталкиваюсь с ошибками

echo exec('rsync --info=progress2,stats source destion | stdbuf -oL awk 'BEGIN { RS="\r" } /%/ { print $2 }' > /temp/progress.txt');

Я получаю эту ошибку

mod_fcgid: stderr: PHP Parse error:  syntax error, unexpected 'BEGIN' (T_STRING), expecting ',' or ')' in /home/laweb/public_html/phptest/copy.php on line 32

Я попытался изменить ‘на’ внутри команды exec (»), тогда я не получаю вывод в журнал ошибок

0

Решение

Вы должны экранировать одинарные кавычки в строке.

\'

Так что эта строка должна это исправить:

echo exec('rsync --info=progress2,stats source destion | stdbuf -oL awk \'BEGIN { RS="\r" } /%/ { print $2 }\' > /temp/progress.txt');

Вы говорите, что не получаете вывод и файл не копируется, попробуйте shell_exec()

$output = shell_exec('rsync --info=progress2,stats source destion | stdbuf -oL awk \'BEGIN { RS="\r" } /%/ { print $2 }\' > /temp/progress.txt');

echo $output;

Теперь, когда я помню использование escapeshellarg()

$command = escapeshellarg('rsync --info=progress2,stats source destion | stdbuf -oL awk \'BEGIN { RS="\r" } /%/ { print $2 }\' > /temp/progress.txt');
echo exec($command);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]