【问题标题】:Imagick readImage falling into system error event blackholeimagick readImage 掉入系统错误事件黑洞
【发布时间】:2019-02-22 19:19:09
【问题描述】:

我正在尝试安装 imagick(到目前为止不是一件容易的事,但使用 https://mlocati.github.io/articles/php-windows-imagick.html 上的 [过滤器] 极大地帮助了我)并在我的 WAMP/Windows10/PHP7.0 webapp 上运行,但我遇到了readImage() 调用上的黑洞(日志文件仅上升到“检查点 2”)。

查看 Windows 系统事件日志,我可以看到错误级别的应用程序事件读取:

Faulting application name: httpd.exe, version: 2.4.23.0, time stamp: 0x5776399f
Faulting module name: php_imagick.dll, version: 7.0.10.0, time stamp: 0x58927660
Exception code: 0xc0000409
Fault offset: 0x000000000002468c
Faulting process ID: 0x4ba8
Faulting application start time: 0x01d44f71d980b2f3
Faulting application path: C:\wamp64\bin\apache\apache2.4.23\bin\httpd.exe
Faulting module path: C:\wamp64\bin\php\php7.0.18\ext\php_imagick.dll
Report ID: 1b3f5a6d-ed31-4fae-b73d-ebf0d17e9c94
Faulting package full name: 
Faulting package-relative application ID: 

通过我的 WAMP 运行以下代码时会出现此错误

<?php
class Test  {
public function doTrace($msgTx) {
    $dt=date('[D M d H:i:s Y]', gmdate(time()));
    error_log($dt.$msgTx."\n",3, "C:/test.log" );
}
public function doTest() {
    $fn='C:/test.pdf'; 
    if ( file_exists($fn) ) {
        $im = new Imagick();
        $this->doTrace("checkpoint 1");
        $im->setResolution(300, 300); 

        $this->doTrace("checkpoint 2");
        $im->readImage($fn."[0]");    //[0] for the first page

        $this->doTrace("checkpoint 3");
        $im->setImageFormat('png');

        $this->doTrace("checkpoint 4");
        header('Content-Type: image/png');
        echo $im;

        $this->doTrace("checkpoint 5");
    }
    else {
        echo "Did not find $fn";
    }
}
}

$try = new Test();
$try->doTest();

?>

我只是在尝试 readImage (http://php.net/manual/en/imagick.readimage.php#116812) 的手动输入版本,那么这里有什么问题?我是否错误地安装了 Imagick (php_imagick-3.4.3-7.0-ts-vc14-x64) 还是别的什么? (注意,我可以让 IM 进行一些简单的测试)

我的 phpinfo() 读取:

 imagick
 imagick module enabled
 imagick module version 3.4.3
 imagick classes    Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
 Imagick compiled with ImageMagick version  ImageMagick 6.9.3-7 Q16 x64 2016-03-27 http://www.imagemagick.org
 Imagick using ImageMagick library version  ImageMagick 6.9.3-7 Q16 x64 2016-03-27 http://www.imagemagick.org
 ImageMagick copyright  Copyright (C) 1999-2015 ImageMagick Studio LLC
 ImageMagick release date   2016-03-27
 ImageMagick number of supported formats:   234
 ImageMagick supported formats  3FR, AAI, AI, ART, ARW, AVI, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CLIPBOARD, CMYK, CMYKA, CR2, CRW, CUR, CUT, DATA, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPS, DPX, DXT1, DXT5, EMF, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FITS, FPX, FRACTAL, FTS, G3, GIF, GIF87, GRADIENT, GRAY, GROUP4, GV, H, HALD, HDR, HISTOGRAM, HRZ, HTM, HTML, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, J2C, J2K, JBG, JBIG, JNG, JNX, JP2, JPC, JPE, JPEG, JPG, JPM, JPS, JPT, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAGICK, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCREENSHOT, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIFF, VIPS, VST, WBMP, WEBP, WMF, WMV, WPG, X3F, XBM, XC, XCF, XPM, XPS, XV, YCbCr, YCbCrA, YUV

谢谢

安倍

【问题讨论】:

  • 您是否已单步执行代码并知道错误发生在哪一行?例如,如果在您尝试实例化 Imagick 时错误在 $im = new Imagick(); 处触发,那么您的 Imagick 配置/安装可能有问题。如果在尝试读取/操作文件时出错,则文件可能已损坏,并且 Imagick 不知道该怎么做,因此会出现段错误。 HTH
  • 问题出在 readImage() 调用上(错误日志上升到“检查点 2”;我可以通过 Foxit Reader 打开 PDF 没有问题。

标签: php imagemagick wamp imagick


【解决方案1】:

因此,没有明显的解决方案,我决定尝试不同的方向,看看是否可以通过命令行运行转换命令。这迫使我不得不安装 Ghostscript (https://www.ghostscript.com/download/gsdnld.html)。

现在 Ghostscript 已安装,似乎 PHP 正在工作 - 我得到了 PDF 第一页的图像。

我是否在安装说明中错过了这一点(我不记得看到有人提到过 Ghostscript)?

一个

【讨论】:

    猜你喜欢
    • 2019-03-19
    • 2012-04-09
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    相关资源
    最近更新 更多