php-imagick + nginx chroot 缺少 PDF 支持

php-imagick + nginx chroot are missing PDF support

提问人:Nick 提问时间:8/23/2023 最后编辑:Nick 更新时间:8/23/2023 访问量:43

问:

我目前正在尝试在 PHP 中将图像转换为 PDF。从命令行运行时,脚本运行良好,但是当从浏览器调用完全相同的代码时,它无法加载PDF模块。所以我认为这是一个 chroot 问题?

在 phpinfo() 中,PDF 扩展名也没有以 ImageMagick 支持的格式显示,所以这是一个危险信号。

错误信息: UnableToLoadModule '/usr/lib64/ImageMagick-7.1.1/modules-Q16HDRI/coders/pdf.la':找不到文件 @ error/module.c/OpenModule/1291 in /test.php:8

但是当我查看我的chroot文件夹时,这个文件就存在。使用 imagick 将 JPG 转换为 PNG 时,它可以在浏览器(和测试脚本)中工作。它唯一的错误是 PDF 的

测试代码:

<?php

$sSourcePath = dirname(__FILE__) . '/test.png';
$sDestinationPath = dirname(__FILE__) . '/test.pdf';
$oImagick = new Imagick($sSourcePath);
$oImagick->setImageFormat('pdf');
$oImagick->writeImage($sDestinationPath);

版本:

OS: AlmaLinux 9.2
Nginx: 1.25.2
PHP Version:8.2.9
PHP-Imagick version info:
imagick module version  3.7.0
imagick classes Imagick, ImagickDraw, ImagickPixel
ImagickPixelIterator, ImagickKernel
Imagick compiled with ImageMagick version   ImageMagick 7.1.1-2 Q16-HDRI x86_64 20952 
Imagick using ImageMagick library version   ImageMagick 7.1.1-15 Q16-HDRI x86_64 21298 

我尝试过的事情:

  • 其他文件格式(jpg -> png、png -> jpg),正在工作
  • 我已经将 /etc/ 和 /usr/ 复制到我的 chroot 中,没有任何区别
  • 安装Imagick与yum install分开,没有任何区别
  • 我已经检查了 /etc/ImageMagick-7/policy.xml 文件。这是在策略映射中:--> -->

对此文件的更改没有区别,将权限更改为无,删除行,它没有更改任何内容。

  • 每次更改后,php-fpm 和 nginx 都会重新启动。所以这也不是问题

我没有办法检查了,有人知道吗?

php pdf imagick

评论

1赞 Olivier 8/23/2023
“有人知道吗?”使用纯PHP库,如FPDF?

答: 暂无答案