Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >ubuntu下php扩展的曲线救国计划

ubuntu下php扩展的曲线救国计划

作者头像
obaby
发布于 2023-03-31 05:58:33
发布于 2023-03-31 05:58:33
73500
代码可运行
举报
文章被收录于专栏:obaby@marsobaby@mars
运行总次数:0
代码可运行
每次更换服务器,后续都会有很多的事情需要去处理。有的是服务器本身的问题,有的是各种配置问题。所以不到万不得已实在是不想更换服务器,下午看到杜老师的留言提到了litespeed cache,于是登录后台看了一眼,发现原来的redis缓存配置没有生效。问题也很容易定位,那就是没有安装php的redis扩展。正常的话通过apt就可以安装,但是问题出现了,工控机上php 和php-fpm不是同一个版本。

通过apt安装直接安装了php8.1版本,php-fpm加载不了。问题是我并不记得安装8版本的php,所以这个版本不知道是什么时候安装上的。其实出现这个问题在最开始配置jieba分词的扩展的时候就发现这个问题了,最终通过把服务器的so文件下载下来直接替换实现的。同理,这次也采用了同样的办法在虚拟机上编译了一个redis.so放到扩展目录配置php.ini实现加载。

既然这个问题解决了,顺便想到了之前后台提示的exif和imagick插件的问题,于是想着一块解决。

这个主要是为了解决姐姐的强迫症,不过由于现在的服务器没法创建快照,所以一切操作都得务必小心,免得需要把整个系统重装,那代价就高了。exif通过编译拷贝的方法解决了,但是到了imagic的时候这个办法行不通了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
obaby@h4ck:~/lnmp1.9$ sudo lnmp php-fpm restart
+-------------------------------------------+
|    Manager for LNMP, Written by Licess    |
+-------------------------------------------+
|              https://lnmp.org             |
+-------------------------------------------+
Gracefully shutting down php-fpm . done
Starting php-fpm [29-Mar-2023 21:23:31] NOTICE: PHP message: PHP Warning:  PHP Startup: Unable to load dynamic library 'imagick.so' (tried: /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/imagick.so (libMagickWand-6.Q16.so.6: cannot open shared object file: No such file or directory), /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/imagick.so.so (/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/imagick.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
 done

看提示是缺少libMagickWand-6.Q16.so这个文件,但是搜索了一下并没有找到这个文件。本来就想放弃了,结果看了下虚拟机的日志,发现列出了php-imagic扩展的依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dbuser@ubuntu:~/redis-5.2.1$ sudo apt install  php7.4-imagick 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'php-imagick' instead of 'php7.4-imagick'
The following packages were automatically installed and are no longer required:
  linux-headers-5.13.0-39-generic linux-headers-5.15.0-46-generic linux-hwe-5.13-headers-5.13.0-39
  linux-hwe-5.15-headers-5.15.0-46 linux-image-5.13.0-39-generic linux-image-5.15.0-46-generic linux-modules-5.13.0-39-generic
  linux-modules-5.15.0-46-generic linux-modules-extra-5.13.0-39-generic linux-modules-extra-5.15.0-46-generic
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  gsfonts imagemagick-6-common libfftw3-double3 liblqr-1-0 libmagickcore-6.q16-6 libmagickwand-6.q16-6 ttf-dejavu-core
Suggested packages:
  libfftw3-bin libfftw3-dev libmagickcore-6.q16-6-extra
The following NEW packages will be installed:
  gsfonts imagemagick-6-common libfftw3-double3 liblqr-1-0 libmagickcore-6.q16-6 libmagickwand-6.q16-6 php-imagick
  ttf-dejavu-core
0 upgraded, 8 newly installed, 0 to remove and 217 not upgraded.
Need to get 5,987 kB of archives.
After this operation, 16.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

关键是这两行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
The following additional packages will be installed:
  gsfonts imagemagick-6-common libfftw3-double3 liblqr-1-0 libmagickcore-6.q16-6 libmagickwand-6.q16-6 ttf-dejavu-core

既然知道了依赖项,那么就可以直接安装这些组建了(最后一个不需要):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt install gsfonts imagemagick-6-common libfftw3-double3 liblqr-1-0 libmagickcore-6.q16-6 libmagickwand-6.q16-6

安装之后重新启用扩展的imagick扩展就ok啦:

已经找不到原有的扩展提示了,通过php探针也可以看到加载的扩展生效了:

另外说下几个网页上的方法我都失败了:

1.添加php源 sudo add-apt-repository -r ppa:jczaplicki/xenial-php74-temp

添加之后无法访问,直接删除了

2.源码编译,由于php和php-fpm版本不一致导致编译的扩展没法加载(这个和我的系统环境有关系)

3.使用虚拟机的源替换服务器源(自己探索),最终也是失败了,同样是由于php版本导致的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
obaby@h4ck:~/lnmp1.9$ sudo apt install php7.4-fpm
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 php-common : Breaks: php7.4-common but 7.4.3-4ubuntu2.18 is to be installed
E: Unable to correct problems, you have held broken packages.
obaby@h4ck:~/lnmp1.9$ sudo apt install php7.4-common
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 php-common : Breaks: php7.4-common but 7.4.3-4ubuntu2.18 is to be installed
E: Unable to correct problems, you have held broken packages.

基本错误是一环套一环,解决不了,所以最终采用了曲线救国的方式,那就是异地编译打包,本地安装配置。整体说来虽然麻烦点,但是问题是解决了。这个目前来说看来就比较ok啦,也没什么太大问题。

☆文章版权声明☆

* 网站名称:obaby@mars * 网址:https://h4ck.org.cn/ * 本文标题: 《ubuntu下php扩展的曲线救国计划》 * 本文链接:https://h4ck.org.cn/2023/03/ubuntu%e4%b8%8bphp%e6%89%a9%e5%b1%95%e7%9a%84%e6%9b%b2%e7%ba%bf%e6%95%91%e5%9b%bd%e8%ae%a1%e5%88%92/ * 转载文章请标明文章来源,原文标题以及原文链接。请遵从 《署名-非商业性使用-相同方式共享 2.5 中国大陆 (CC BY-NC-SA 2.5 CN) 》许可协议。


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023年3月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
关于如何使用包管理器APT(Advanced Package Tool)进行内核升级更换Ubuntu内核版本
sudo apt install linux-image-5.15.0-91-generic
Tadeic
2024/12/28
1920
利用全志H616 MangoPi MQ Quad部署一个网络摄像头
考虑到芒果派MangoPi MQ Quad开发板SoC较强的处理能力,直接在板子上编译安装mjpg-streamer。
阿志小管家
2024/02/02
1900
利用全志H616 MangoPi MQ Quad部署一个网络摄像头
Ubuntu 18.04 LTS LAMP搭建
首先,我们需要使用sudo apt-get update更新当前系统下apt包管理器的列表。然后使用sudo apt install apache2命令安装Apache软件。
Linux
2019/03/19
1.3K0
ubuntu安装php-zip扩展失败
首先打开vi /etc/apt/sources.list,然后修改里面的内容如下所示:
魔王卷子
2019/05/31
2.8K2
腾讯云Ubuntu Server 16.04.1 LTS升级系统到Ubuntu 18.04.1 LTS
* 此修改方案为临时方案(/etc/resolv.conf文件系统重启后会自动还原),最终方案待定,下方为腾讯云原装Ubuntu 18.04.1 LTS系统镜像 systemd-resolve --status执行结果,仅供参考。
用户1196360
2018/11/23
8.3K0
腾讯云Ubuntu Server 16.04.1 LTS升级系统到Ubuntu 18.04.1 LTS
同一机器,多版本PHP,以及对应的内置扩展,以及对应的swoole第三方扩展安装
参考地址: Linux Centos6安装php5.6 php7.3多个版本环境 模块冲突 编译php模块的时候一定–with-php-config linux系统/opt目录和/usr/local目录有什么区别 /etc目录下也单独开辟了 /opt目录来管理附加软件包。
waki
2021/12/08
8270
如何搭建 LNMP 网站服务环境
LNMP指的是一个基于CentOS/Debian编写的Nginx、PHP、MySQL一键安装包。可以在VPS、独立主机上轻松的安装LNMP生产环境。LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。
火星救援队长
2018/10/19
4.2K0
如何搭建 LNMP 网站服务环境
ubuntu 20.04 apt 安装 PHP8.0
这里要介绍一下安装扩展的情况。因为PHP有两种运行方式,一种是FPM,一种是CLI。所以它可以控制一个扩展只在FPM加载,而不在CLI加载的方式。
魔王卷子
2021/09/19
3K0
ubuntu 20.04 apt 安装 PHP8.0
PHP图片处理实现图片压缩、合并、水印等
Intervention Image是一个开源的PHP图像处理和操作库,可不依赖于框架单独使用,也提供了对Laravel的友好支持。它提供了一种创建,编辑和合成图像且富有表现力的简便方法,并支持当前两个最常见的图像处理库:GD Library和Imagick。
用户8851537
2021/08/19
1.9K0
LNMP架构应用实战——PHP扩展及缓存插件安装
imagick扩展模块依赖于ImageMagick这个软件,因此需要下载两个软件,先安装ImageMagick这个软件,后装imagick扩展模块
民工哥
2020/09/16
9930
Ubuntu 20.04 LTS 安装 PHP 8.3 教程
在接下来的步骤中,我们将详细介绍如何在 Ubuntu 中安装 PHP 8.3,以确保开发人员能够充分利用这些引人瞩目的新特性。
轩源
2024/09/29
7010
Ubuntu 20.04 LTS 安装 PHP 8.3 教程
宝塔面板或者LNMP下安装php的mongodb扩展
ext 1.8 + lib 1.7 不支持php5.6 MongoDB 4.2支持ext 1.8 + lib 1.5+ 支持php5.6 具体支持列表:https://docs.mongodb.com/drivers/php#compatibility https://docs.mongodb.com/php-library/master/tutorial/install-php-library/
小沨
2020/10/23
1.5K0
PHP安装Imagick扩展
ImageMagick 是一个图象处理软件,也可以作为PHP的一个扩展来使用。它可以编辑、显示包括JPEG、TIFF、PNM、PNG、GIF和Photo CS在内的绝大多数当今最流行的图象格式。你可以改变图象尺寸、旋转、锐化、减少颜色或加入特殊效果到图象里,并且能够以另一种图象格式保存。
Petrochor
2022/06/07
2.2K0
PHP安装Imagick扩展
Ubuntu18.04安装ROS时,遇到错误“unmet dependencies. Unable to correct problems, you have held broken packages
Ubuntu18.04安装ROS ros-melodic-desktop-full时,遇到错误“unmet dependencies. Unable to correct problems, you have held broken packages."。
hankfu
2021/12/30
3.6K0
一文搞懂 PHP 运行环境
成长平台 web 安全学习的第一关是关于搭建 PHP 的运行环境,这个任务的目标是为了让学员理解 PHP 的运行环境中各个组件之间的关系,通过实际的操作来理解,不允许使用一键化工具,比如 phpstudy 等平台,因为在搭建的过程中会遇到各种各样的问题,在一步一步解决问题的过程中,加深对技术背后原理的理解,从而提升学员基础能力。
信安之路
2024/05/09
3020
一文搞懂 PHP 运行环境
ubuntu架设LAMP服务器
Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。LAMP是指一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:
用户7639835
2021/08/30
5.4K0
从Yum安装PHP7.2环境想到的
本文介绍一种比较便捷的安装PHP环境的方法-yum安装,这种安装方式相比源码安装PHP,更加方便快捷。
needrunning
2019/09/24
2.3K0
从Yum安装PHP7.2环境想到的
避坑!用Docker搞定PHP开发环境搭建
因为最近换电脑的缘故需要重新部署一下本地的开发环境,之前采用的虚拟机方案,占用磁盘空间实在是太大,心疼SSD那么点地方,所以这次采用了Docker的方案来部署。关于这次部署的原则,我的想法是尽量使用官方的镜像来实现,尽量不改动或少改动镜像。因为是本地的开发环境,所以想多尝尝鲜,尽量使用高版本的软件来实现。从结果上来说,希望能给同样有需要搭建环境的同学起到一些帮助,少踩一些坑,如果能按照这篇文章的步骤一次搞定那是最好了。
猿哥
2020/02/26
3.8K0
避坑!用Docker搞定PHP开发环境搭建
Ubuntu下LNMP安装
今天说一下 关于 Ubuntu16 下LNMP安装方式吧 PHP7.2、MySQL5.7、Nginx1.13,貌似这三个是目前最新的了吧 哈哈,废话不说,开始正题 原文链接: CODECASTS
hedeqiang
2019/12/18
1.8K0
无法安装python3的连续报错-mysql include软链接问题
作者:matrix 被围观: 7,092 次 发布时间:2019-03-12 分类:Python | 无评论 »
HHTjim 部落格
2022/09/26
8550
无法安装python3的连续报错-mysql include软链接问题
推荐阅读
相关推荐
关于如何使用包管理器APT(Advanced Package Tool)进行内核升级更换Ubuntu内核版本
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验