PHP5.6安装imagick扩展+php -m和phpinfo() 不一致解决

前言

为什么会安装imagick扩展呢?在php项目里面需要进行图片上传或者是上传文件,如果你php没有安装扩展就会出现如下错误提示:Fatal error: Class 'Imagick' not found in,因此这篇文档就诞生了。

imagick简介

Imagick扩展是一个用于在PHP中操作图像的强大工具。它基于ImageMagick软件库,提供了一系列函数和方法来处理、创建和修改图像文件。Imagick扩展可以帮助您实现以下任务:图像处理、格式转换、图像编辑、视觉效果、图像合成、高级图像处理。

环境准备

大家在安装扩展的时候,建议先查一下看看当前环境的php版本需要对应安装imagick版本

我当前php环境是5.6版本,安装扩展是imagick3.7版本,在安装imagick之前还需要安装ImageMagick我安装的版本是6.9。

ImageMagick下载地址:Index of /archive

 imagick下载地址:PECL :: Package :: imagick

通过自带的pecl安装imagick

这个方式就不需要去下载imagick了,它会自动下载imagick的最新版本

下载ImageMagick之后,上传到对应的服务器的位置,根据你们自己想上传到的位置上传上去

1.安装ImageMagick

(1)解压ImageMagick

tar -zxvf ImageMagick-6.9.12-93

(2)切换到解压目录

cd ImageMagick-6.9.12-93/

(3) 配置--指定安装目录

./configure --prefix=/usr/local/imagemagick

(4)编译安装

make && make install

到此,ImageMagick就安装成功了。这个安装一般不会出现什么问题。

2.安装imagick

(1)找到之前安装php的pecl文件

whereis pecl

 (2) 通过pecl安装imagick

/usr/bin/pecl install pecl

(3)安装过程可能会让你输入ImageMagick的路径 上面我们安装的路径:/usr/local/imagemagick 输入回车即可。

(4) 安装成功

Build process completed successfully
Installing '/usr/lib/php/20131226/imagick.so'
Installing '/usr/php5.6/include/php/ext/imagick/php_imagick_shared.h'
install ok: channel://pecl.php.net/imagick-3.7.0RC1
configuration option "php_ini" is not set to php.ini location
You should add "extension=imagick.so" to php.ini

(5)在php.ini文件末尾添加内容:extension=imagick.so

可以通过命令:php --ini 找到php.ini 添加即可。

 (6)查看扩展

命令:php -m 或  /usr/bin/php5.6 -m
其中php5.6是可执行文件你们位置可能不一致,需要根据自己的路径调试即可。

 (7) 重启php-fpm服务和web服务器(Apache\nginx)

 3.测试

不管你是Apache还是Nnginx服务器,都可以输出phpinfo()函数在对应路径测试,看看imagick扩展已经安装 如下所示:

注:

(1)php -m 需要和phpinfo()展现扩展一致才算php项目能用,测试成功。

(2)注意清空浏览器的缓存再试

4. 遇到的问题php -m 和 phpinfo() 展示的扩展不一致

通过命令 php --ini 可以看到读取php.ini的配置位置

 而phpinfo()输出的php.ini的位置是这样

 发现Nginx读取的php.ini配置文件和php命令下读取的php.ini配置文件不是同一个。

解决办法:我们先停止php-fpm 服务然后,通过找到php-fpm的可执行文件 并且通过-c 选项指定php-fpm加载php.ini的路径。

例如:可以通过命令:whereis php-fpm 找到位置

 切换到php-fpm的目录sbin下

执行命令:启动php-fpm 就可以啦。

./php-fpm5.6 -c /etc/php/5.6/fpm

再重新启动web服务器(Nginx/Apache)再次访问phpinfo() 就ok啦。

猜你喜欢

转载自blog.csdn.net/m0_52985087/article/details/132358015