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
相关产品推荐
相关产品推荐

