doutuo2829 2018-10-11 18:24
浏览 72

rsync运行良好的思想终端但不与PHP exec

I have got this running fine in the terminal

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

but when I try and move it over to PHP exec i run into errors

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

I receive this error

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

I have tried changing ' to " inside the exec(' ') command then I don't receive any output to the error log

  • 写回答

1条回答 默认 最新

  • duanliao3826 2018-10-11 18:24
    关注

    You need to escape the single quotes within the string.

    \'
    

    So this line should fix it:

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

    You are saying you get no output and the file does not copy, try shell_exec()

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

    Now that i remember use escapeshellarg()

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

报告相同问题?

悬赏问题

  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图