最近我们真的是因为一个问题解决就要衍生另一个问题,不过也是好事情,不断提升和学习,知识逐渐丰富,对疑难杂症处理会变得得心应手,所以每次的成功解决方案都要记录,并且我发现很多同行都在搜索类似问题,因此分享是肯定有作用滴。
PHP Warning: Module ‘zip’ already loaded in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library ‘ixed.8.0.lin’ (tried: /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/ixed.8.0.lin (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/ixed.8.0.lin: cannot open shared object file: No such file or directory), /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/ixed.8.0.lin.so (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/ixed.8.0.lin.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library ‘/www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/redis.so’ (tried: /www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/redis.so (/www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/redis.so: undefined symbol: zend_string_init_interned), /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718//www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/redis.so.so (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718//www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/redis.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library ‘swoole.so’ (tried: /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/swoole.so (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/swoole.so: cannot open shared object file: No such file or directory), /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/swoole.so.so (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/swoole.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library ‘/www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/fileinfo.so’ (tried: /www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/fileinfo.so (/www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/fileinfo.so: undefined symbol: zend_string_init_interned), /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718//www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/fileinfo.so.so (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718//www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/fileinfo.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 zip 遇到的错误包含多个 PHP 扩展加载问题,我将分别解决每个问题并提供完整的操作步骤。
Module 'zip' already loaded
Unable to load dynamic library 'ixed.8.0.lin'
Unable to load dynamic library 'redis.so'
Unable to load dynamic library 'swoole.so'
Unable to load dynamic library 'fileinfo.so'
# 查找所有加载 zip 模块的配置
grep -r "extension.*zip" /www/server/php/72/etc/
# 编辑主 php.ini 文件
nano /www/server/php/72/etc/php.ini
在 php.ini 中:
extension=zip.so
extension=zip.so
的行确保了没有重复 但是会报错
确保了 所有行里面都没有重复
# 检查是否编译进 PHP 核心
php -i | grep "Configure Command" | grep zip
# 如果已编译进核心,则完全删除 php.ini 中的 extension=zip.so
# 完全移除 ixed 扩展引用
nano /www/server/php/72/etc/php.ini
查找并删除或注释掉:
; extension=ixed.8.0.lin
# 卸载现有 redis 扩展
pecl uninstall redis
# 安装正确版本的 redis 扩展
# 对于 PHP 7.2
pecl install redis-5.3.7
# 或者通过宝塔面板重新安装
# 宝塔面板 → PHP 7.2 → 安装扩展 → redis
# 安装 swoole 扩展
# 对于 PHP 7.2
pecl install swoole-4.8.11
# 或者通过宝塔面板
# 宝塔面板 → PHP 7.2 → 安装扩展 → swoole
# 重新安装 fileinfo 扩展
# 对于 PHP 7.2
apt-get install php7.2-fileinfo
# 或者通过宝塔面板
# 宝塔面板 → PHP 7.2 → 安装扩展 → fileinfo
cp /www/server/php/72/etc/php.ini /root/php.ini.bak
nano /www/server/php/72/etc/php.ini
删除或注释以下内容:
; extension=ixed.8.0.lin
; extension=redis.so
; extension=swoole.so
; extension=fileinfo.so
php -m | grep zip
如果显示两次,按照前面方法解决重复加载问题
/etc/init.d/php-fpm-72 restart
/etc/init.d/nginx restart
php -m | grep -E 'zip|redis|swoole|fileinfo'
php -i | grep extension_dir
# 安装编译依赖
apt-get install -y php7.2-dev pkg-config libssl-dev
# 清理旧的编译文件
pecl uninstall redis
rm -rf /tmp/pear
# 查看 PHP 错误日志
tail -f /www/server/php/72/var/log/php-fpm.log
# 确保命令行和网站使用相同 PHP 版本
update-alternatives --config php
针对 这个命令可以说到说到
update-alternatives --config php
命令详解update-alternatives --config php
是 Linux 系统中用于管理多个 PHP 版本切换的命令,主要功能是:
该命令通过维护一个”备选方案”系统来管理不同版本的 PHP:
/usr/bin/
下有对应的二进制文件update-alternatives
创建 /usr/bin/php
的符号链接指向当前选择的版本php
命令都会使用当前选定的版本update-alternatives --config php
输出示例:
There are 2 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/php8.0 80 auto mode
1 /usr/bin/php7.4 74 manual mode
2 /usr/bin/php8.0 80 manual mode
Press <enter> to keep the current choice[*], or type selection number:
php -v
sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.1 81
sudo update-alternatives --remove php /usr/bin/php7.4
涉及 PHP 7.2 和 8.0 的混合使用,可以通过此命令:
建议运行后选择与您网站相同的 PHP 版本(很可能是 7.2),然后重新尝试安装和配置扩展。
卓伊凡我听从建议,直接最终解决方案,卸载7.2
然后奉劝大家 尽量在服务器不要多版本安装php ,项目多,那么现在轻量云服务器便宜,尽量同版本的放一堆
软件行业版本问题 真的 太太太太严重了
不要学我们 几十个放一台,几十个 放一台, 我们估计服务器成本又要增加了哎, 现在面对很多老项目 直接重写 都比升级要好。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。