You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP7.4环境下Imagick的WriteImage函数无法正常工作的问题求助

PHP7.4环境下Imagick的WriteImage函数无法正常工作的问题求助

各位开发者朋友好,我目前遇到一个棘手的问题:在用PHP的Imagick扩展处理文件转换时,代码一执行到writeImage方法就直接中断,完全无法生成目标图片文件。

我已经尝试过的操作:

  • 修改了policy.xml中的PDF权限限制,把这一行注释掉了:
<!-- <policy domain="coder" rights="none" pattern="PDF" /> -->

以下是我正在使用的完整代码:

private $path;
private $file;

function __construct($file){
    $this->path = "upload/".$file;
    $this->file = $file;
}

function convertDocument(){
    if ( !is_dir("custom/modules/Contacts/temp") ) {
        mkdir("custom/modules/Contacts/temp",0777,TRUE);
        chmod("custom/modules/Contacts/temp", 0777);
    }

    $imagick = new imagick();
    $imagick->setResolution(200, 200);
    $imagick->readImage($this->path);
    $imagick->setImageBackgroundColor('white');
    $imagick->setImageAlphaChannel(11);

    $GLOBALS['log']->fatal('Read Image');

    $imagick->setImageResolution(2000, 2000);
    $imagick->setImageFormat('jpg');
    $pages = (int)$imagick->getNumberImages();

    $GLOBALS['log']->fatal('Get Image Pages: '.$pages);

    foreach($imagick as $i=>$imagick) {
        $GLOBALS['log']->fatal('Write Images '.$i);
        // 代码执行到这一行后直接中断,无任何报错提示
        $imagick->writeImage("custom/modules/Contacts/temp/".$this->file."_".$i.".jpg");
    }

    $GLOBALS['log']->fatal('After Writing images, START MERGING');

    $mpdf = new mPDF('en','Letter');
    for($p = 0; $p < $pages; $p++){
        $GLOBALS['log']->fatal('Write Image in PDF '.$p);
        $mpdf->WriteHTML("<img src='custom/modules/Contacts/temp/".$this->file."_".$p.".jpg' />");
    }

    $mpdf->Output('custom/modules/Contacts/temp/'.$this->file.'.pdf');
    $imagick->clear();

    $GLOBALS['log']->fatal('Conversion End .... ');
    return;
}

从日志输出能看到,Write Images X这条日志可以正常打印,但后续的After Writing images, START MERGING完全没有输出,说明程序就是卡在writeImage这一步了。

有没有朋友能帮我分析下可能的原因,或者给我一些排查的方向?非常感谢!

备注:内容来源于stack exchange,提问作者Abdullah Shahab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 08:17:57