【问题标题】:Imagick Not Loaded in PHPImagick 未在 PHP 中加载
【发布时间】:2014-01-26 06:53:42
【问题描述】:

我已经在 Ubuntu 12.04 上安装了 Imagick,但我仍然得到了

找不到类“Imagick”

当我通过终端检查时

php -m

我明白了

[PHP Modules]
bcmath
bz2
calendar
Core
ctype
date
dba
dom
ereg
exif
fileinfo
filter
ftp
gettext
hash
iconv
imagick
json
libxml
mbstring
mhash
openssl
pcntl
pcre
PDO
Phar
posix
readline
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
zip
zlib

[Zend Modules]

但是当我通过 PHP 脚本检查加载的扩展时

get_loaded_extensions()

我没有幻想

Array
(
    [0] => Core
    [1] => date
    [2] => ereg
    [3] => libxml
    [4] => openssl
    [5] => pcre
    [6] => sqlite3
    [7] => zlib
    [8] => bcmath
    [9] => bz2
    [10] => calendar
    [11] => ctype
    [12] => curl
    [13] => dba
    [14] => dom
    [15] => hash
    [16] => fileinfo
    [17] => filter
    [18] => ftp
    [19] => gd
    [20] => gettext
    [21] => SPL
    [22] => iconv
    [23] => session
    [24] => intl
    [25] => json
    [26] => ldap
    [27] => mbstring
    [28] => mcrypt
    [29] => mssql
    [30] => standard
    [31] => mysqlnd
    [32] => mysqli
    [33] => mysql
    [34] => PDO
    [35] => pdo_mysql
    [36] => pdo_pgsql
    [37] => pdo_sqlite
    [38] => Phar
    [39] => posix
    [40] => Reflection
    [41] => imap
    [42] => shmop
    [43] => SimpleXML
    [44] => soap
    [45] => sockets
    [46] => exif
    [47] => sybase_ct
    [48] => sysvsem
    [49] => sysvshm
    [50] => tokenizer
    [51] => wddx
    [52] => xml
    [53] => xmlreader
    [54] => xmlwriter
    [55] => xsl
    [56] => zip
    [57] => apache2handler
    [58] => mhash
)

php -i 显示

imagick 

module => enabled
imagick module version => 3.2.0RC1
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator
ImageMagick version => ImageMagick 6.6.9-7 2012-08-17 Q16 http://www.imagemagick.org
ImageMagick copyright => Copyright (C) 1999-2011 ImageMagick Studio LLC
ImageMagick release date => 2012-08-17
ImageMagick number of supported formats:  => 206
ImageMagick supported formats => 3FR, A, AAI, AI, ART, ARW, AVI, AVS, B, BGR, BGRA, BMP, BMP2, BMP3, BRF, C, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CRW, CUR, CUT, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPX, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FITS, FRACTAL, FTS, G, G3, GIF, GIF87, GRADIENT, GRAY, GROUP4, HALD, HDR, HISTOGRAM, HRZ, HTM, HTML, ICB, ICO, ICON, INFO, INLINE, IPL, ISOBRL, J2C, JNG, JP2, JPC, JPEG, JPG, JPX, K, K25, KDC, LABEL, M, M2V, M4V, MAC, MAP, MAT, MATTE, MIFF, MNG, MONO, MOV, MP4, MPC, MPEG, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NULL, O, ORF, OTB, OTF, PAL, PALM, PAM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG24, PNG32, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, R, RADIAL-GRADIENT, RAF, RAS, RGB, RGBA, RGBO, RLA, RLE, SCR, SCT, SFW, SGI, SHTML, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UIL, UYVY, VDA, VICAR, VID, VIFF, VST, WBMP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, Y, YCbCr, YCbCrA, YUV

Directive => Local Value => Master Value
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0

在 PHP 日志中出现此错误

PHP Warning:  PHP Startup: imagick: Unable to initialize module
Module compiled with module API=20090626
PHP    compiled with module API=20121212

【问题讨论】:

  • 你也通过终端运行代码吗?
  • 你重启过网络服务器吗?
  • 你的php.ini可能没有修改
  • 我更改了 php.ini 并添加了“extension=imagick.so”,还重新启动了 Web 服务器,但没有任何变化。
  • 我正在使用 XAMPP 1.8.3 (PHP 5.5.6)。 .so文件放在/opt/lampp/lib/php/extensions/no-debug-non-zts-20121212/Imagick.so

标签: php ubuntu imagick pecl


【解决方案1】:

在我的例子中,我将它安装在 Docker 容器中,但是我从没有 Imagick 的主机运行我的 CLI 脚本。

【讨论】:

    【解决方案2】:

    重启php

    service php5-fpm restart
    

    【讨论】:

      【解决方案3】:

      可能的解决方案:

      仔细检查路径和 php 配置 - 您可能在另一个目录中有 imagick.so 文件,而不是 php 正在寻找扩展名的那个?

      1) 找到正确的 php.ini 文件 - 在您的 phpinfo() 页面中,它会指出实际使用的是哪个 php.ini。

      2) 确保 imagick.so 位于正确的扩展目录中(php 真正使用的那个)。要检查实际路径使用:

      php-config --extension-dir

      3)如果(1)和(2)都OK,在php.ini中启用扩展

      extension=imagick.so

      4) 重启网络服务器,imagick 应该存在(加载)在 phpinfo()

      备注#1

      SO source post

      请记住,以下内容也适用

      您的扩展应该在三个主要方面与您的 PHP 服务器兼容 属性:

      1- PHP 服务器配置的 Zend API 编号(在 phpinfo() 你可以找到这个数字),这个数字应该是一样的 在构建时使用您的扩展头文件。

      2- PHP 服务器上的编译器版本和扩展必须是 一样的。

      3- PHP 服务器中的线程安全很重要。如果你使用 线程安全服务器,那么您的扩展必须使用 php 构建 线程安全库,如果你使用非线程安全服务器,你应该 使用 PHP-nts 库构建您的扩展。

      备注#2

      SO source post

      请记住,如果 .so 文件损坏、其他方面不正确(文件结构不正确)或依赖于丢失或无法加载的文件 - 将无法加载扩展名并使其可用。

      备注#3

      请注意,“php -m”显示的是编译成 php 的模块,而不是加载的扩展。请尝试以下操作以获取更多详细信息:

      php -i

      编辑

      提供的php错误

      使用模块 API=20090626 编译的模块
      使用模块 API=20121212 编译的 PHP

      清楚地表明您使用与 php.ini 不匹配的不正确 API 版本编译的模块。 您需要手动构建 PHP 扩展。 您最终得到的扩展似乎是针对不同版本的 PHP 构建的,而不是您当前的 PHP 5.5。

      有很多关于这个主题的教程,只要记住使用正确版本的 imagick 和 phpize。这应该可以帮助您:http://wiki.dreamhost.com/ImageMagick_and_imagick_php_module_on_shared_hosting

      【讨论】:

      • 我仍然面临同样的问题。 php.ini 没有加载 imagick 扩展
      • 你检查扩展路径了吗?
      • 我不确定我是否使用 php 线程安全库,也不确定扩展是否是线程安全的。你能告诉我如何检查吗?
      • 是的,我确实检查了路径,它是一样的
      • phpinfo 中是否存在 imagick?如果还是不行,请检查 apache 错误日志是否有任何相关错误,也许您会发现一些有用的信息(例如“PHP 警告:PHP 启动:无法加载动态库...”)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      • 2018-04-16
      相关资源
      最近更新 更多