加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

CutyCapt与php exec

发布时间:2020-12-13 16:20:59 所属栏目:PHP教程 来源:网络整理
导读:我在CentOS上使用CutyCapt. 它通过终端工作正常,但它不能通过 PHP exec功能. 我在终端启动了xvfb命令: Xvfb :99 -screen 0 1024x768x24 我试图通过php脚本做截图: exec("DISPLAY=:99 /path/to/cutycapt --url=some url --out=path/to/output"); 它没有显示
我在CentOS上使用CutyCapt.
它通过终端工作正常,但它不能通过 PHP exec功能.
我在终端启动了xvfb命令:

Xvfb :99 -screen 0 1024x768x24

我试图通过php脚本做截图:

exec("DISPLAY=:99 /path/to/cutycapt --url=<some url> --out=<path/to/output>");

它没有显示任何错误,但没有输出文件(输出目录有chmod 777)
有人能帮助我吗?

谢谢

UPD:
也许以某种方式允许Apache执行Xvfb更好?

解决方法

我设法让CutyCapt在最后使用php成功运行. $_parameters通过AJAX传递给php脚本.希望这可以帮助…

case 'Output_Chart': {

    // We always create the .png.  We use the  ImageMagick convert (IMC) command to make .pdfs
    if ($_Suffix == 'pdf') {
       $IMC = ";convert -page 735x850 '$_PathOut/$_ChartName.png' '$_PathOut/$_ChartName.pdf'";
    } else {
       $IMC = '';
    }

    // Prepare the query string for the CutyCapt URL
    $sQuery_Pattern   = '?Path=%s&iDL=%d';
    $sQuery           = sprintf($sQuery_Pattern,$_Path,$_iDL);

    // Prepare CutyCapt's command and parameters (NB: query string and out parameter are enclosed in aposts for the shell)
    $sCC_Cmd          = '/var/www/LF/Includes/CutyCapt';
    $sCC_URL          = "http://localhost/LF/LFPrint.html'$sQuery'";     // Note: Inner apostrophes
    $sCC_Out          = "'$_PathOut/$_ChartName.png'";
    $sCC_Pattern      = ' --url=%s --out=%s --delay=%d --min-width=%d';
    $sCC_Options      = sprintf($sCC_Pattern,$sCC_URL,$sCC_Out,$_Delay,$_MinWidth);
    //$sCC_CmdLine         = $sCC_Cmd . $sCC_Options . " 2> CutyCapt.err.txt";
    $sCC_CmdLine         = $sCC_Cmd . $sCC_Options . " 2> /dev/null";

    // Prepare the final command line with xvfb-run,CutyCapt,and the URL?QueryString
    $sCC_CmdLine = 'xvfb-run --auto-servernum --server-args="-screen 0,800x1000x24" ' . $sCC_CmdLine . $IMC;
    exec( $sCC_CmdLine,$aOutput = array(),$ret);
    // Wait for and then return the results.  sCC_CmdLine and aOutput are just for debugging
    echo json_encode(array("ret" => $ret,"cmd" => $sCC_CmdLine,"Output" => $aOutput));
    break;
 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读