CentOS中的ImageMagick安装问题

4
我正在尝试在我的服务器(CentOS 7.1 Minimal)上安装ImageMagick,步骤如下链接所示: ImageMagick安装步骤 在第一步中出现以下错误:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.de.leaseweb.net
 * epel: mirrors.n-ix.net
 * extras: mirror.de.leaseweb.net
 * remi: remi.schlundtech.de
 * remi-php55: remi.schlundtech.de
 * remi-php56: remi.schlundtech.de
 * remi-safe: remi.schlundtech.de
 * remi-test: remi.schlundtech.de
 * updates: mirror.de.leaseweb.net
Package gcc-4.8.3-9.el7.x86_64 already installed and latest version
No package php-devel available.
No package php-pear available.
Nothing to do

抱歉我的英文不好 :D - ali moradi
2个回答

5
因为这个项目在许多网站上受到了质疑,所以我需要完整地解释安装过程......这个过程已经在CentOS 6.5和PHP56以及Imagick-3.4.3(ImageMagick-7)上进行了测试。
更改安装过程中任何需要更改的部分,比如你的php版本或文件夹。

你可以在ImageMagick版本中找到最新版本的"ImageMagick"; 使用最新的稳定版本。

如果你已经多次安装了"ImageMagick",请先删除所有的安装并找到"ImageMagick"和"imagick"文件夹和文件,并清理所有内容,然后按照此过程继续安装过程。
# yum remove ImageMagick ImageMagick-devel

使用以下命令查找文件或文件夹:
# find / -name 'ImageMagick*'
# find / -name 'imagick*

查找并删除所有显示的文件和文件夹。

开始安装php-pear:
确保您已经安装了php-pear,稍后将用它来安装Imagick PHP模块。 如果您没有pear,可以使用Yum进行安装:

# yum install php-pear

如果出现以下错误:
没有可用的php-pear软件包。
错误:无事可做
解决方案:
# cd /etc/

请打开yum.conf文件

或者

# nano /etc/yum.conf

接着找到并删除php*,保存文件。

然后输入:

# yum install --enablerepo remi php-pear php-devel

为了测试成功安装: 输入:

# yum info php-pear

结果大致如下:

Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * epel: yum.ds.stackexchange.com
stack-local-prod                                                                                                                                                                                                   | 2.9 kB     00:00
Available Packages
Name        : php-pear
Arch        : noarch
Epoch       : 1
Version     : 1.9.4
Release     : 4.el6
Size        : 393 k
Repo        : base
Summary     : PHP Extension and Application Repository framework
URL         : http://pear.php.net/package/PEAR
License     : BSD and PHP and LGPLv2+
Description : PEAR is a framework and distribution system for reusable PHP
            : components.  This package contains the basic PEAR components.

开始安装 ImageMagick:

# yum install ImageMagick
# yum install ImageMagick-devel
# pecl install Imagick

重要提示:将“ImageMagick”文件夹从“/usr/include”复制到“/usr/local/include”,以便ImageMagick找到“MagickWand.h”

# cd /usr/include
# cp ImageMagick /usr/local/include

在下面这几行之前别忘了:进入 "php.ini" 文件,找到 "disable_functions" 并清除 "proc_open、popen、proc_close",因为安装 Imagick 需要这些函数。安装完成后,您可以将这些函数添加到 "php.ini" 文件中的 "disable_functions" 中。

继续:

# cd /usr/local/src 
# wget http://pecl.php.net/get/imagick-3.4.3.tgz
# tar xzfv imagick-3.4.3.tgz
# cd imagick-3.4.3
# phpize
# ./configure --with-php-config=/usr/local/php56/bin/php-config
# make
# make install

复制安装共享扩展程序:"/usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/",这是扩展目录。
将"imagick.so"从"/usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/"复制到"/usr/local/php56/lib/php/extensions/"扩展目录。

# cd /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/
# cp imagick.so /usr/local/php56/lib/php/extensions/

接下来,编辑 "php.ini" 文件,在 "Dynamic Extensions" 中添加 extension=imagick.so 在一个空行上,不要忘记在您的服务器上有 2 个或更多的 "php.ini" 文件,您可以找到它们所有:

# find / -name 'php.ini'

结果可能是这样的

/etc/php.ini
/usr/local/php56/lib/php.ini

在所有阶段都使用此文件:

/usr/local/php56/lib/php.ini

为了测试成功,安装:

# php -m | grep imagick

结果应该是:imagick

要查找所有PHP函数和扩展,请使用:

# php -m

现在你可以在显示列表中找到 "imagick"
不要忘记: 编辑 "php.ini",找到 "disable_functions" 并添加 "proc_open,popen,proc_close" 以禁用函数,以增强服务器安全性!

现在重新启动你的服务器

# reboot

为了测试在PHP上安装Imagick,使用以下代码在PHP文件中:

if(extension_loaded('imagick')) {
  $imagick = new Imagick();
  print_r($imagick->queryFormats());
}
else {
  echo 'imagick is not available.';
}

或使用

echo phpinfo();

遗憾的是,在 cPanel 管理的服务器上,核心 PHP 包的软件包名称不标准,因此与 remi 存储库中的软件包名称不匹配。尝试 yum install --enablerepo remi php-pear php-devel 会给出 file /usr/bin/php from install of php-cli-5.4.45-16.el7.remi.x86_64 conflicts with file from package ea-php-cli-0.2.0-7.7.1.cpanel.x86_64 的提示。我不知道是否有安全的方法将 ea-php-cli 替换为来自 remi 的 php-cli,当然尝试删除 ea-php-cli 将导致超过 50 个依赖的 php 软件包被删除。 - Neek

2
根据您提供的代码库列表,您正在使用“remi”代码库来安装PHP。因此,只需
yum install php-pecl-imagick

如果有RPM软件包,就不需要从源代码编译。

但是由于yum甚至没有找到php-devel,需要检查yum配置中的“exclude”行,看起来像是cpanel主机,它将许多基础软件包替换为自己的软件包。


给出这个错误:已加载插件:fastestmirror 从缓存的主机文件中加载镜像速度
  • base: centosmirror.netcup.net
  • epel: mirrors.n-ix.net
  • extras: centosmirror.netcup.net
  • remi: mirror5.layerjet.com
  • remi-php55: mirror5.layerjet.com
  • remi-php56: mirror5.layerjet.com
  • remi-safe: mirror5.layerjet.com
  • remi-test: mirror5.layerjet.com
  • updates: centosmirror.netcup.net 没有可用的php-pecl-imagick软件包。 错误:无事可做。
- ali moradi
就像我之前所说的,检查yum配置中的排除。 - Remi Collet
grep -r exclude /etc/yum* - Remi Collet
这是我需要的结果。/etc/yum/pluginconf.d/fastestmirror.conf:#exclude=.gov, facebook /etc/yum.conf:exclude=apache* httpd* mod_* mysql* MySQL* mariadb* da_* ftp exim* sendmail* php* bind-chroot* - ali moradi
我认为必须从这些文件中删除apache* httpd*。好吗? - ali moradi
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接