0 评论

0 收藏

分享

[PHP以及PHP框架相关] 解决 Laravel PHP Warning: PHP Startup: Unable to load dynamic library 'zip.

解决 Laravel PHP Warning: PHP Startup: Unable to load dynamic library ‘zip.so’ 报错问题以及关于php版本混淆问题-深度详解优雅草卓伊凡
PHP Warning: PHP Startup: Unable to load dynamic library ‘zip.so’ (tried: /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/zip.so (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/zip.so: cannot open shared object file: No such file or directory), /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/zip.so.so (/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/zip.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
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/
这是个很麻烦的问题,我们字面理解是 未安装扩展
实际他的麻烦在于我们安装了扩展,我们一步步看
针对特别是 zip.so 和 fileinfo.so 扩展未能正确加载。以下是完整的解决方案:
问题分析
  • 混合的 PHP 版本路径:系统同时引用了 PHP 7.2 和 PHP 8.0 的扩展路径
  • 缺失或损坏的扩展:zip.so 和 fileinfo.so 扩展文件缺失或版本不匹配
  • 错误的扩展配置:PHP 配置文件错误地引用了不存在的扩展
解决方案1. 确认当前使用的 PHP 版本php -v2. 根据您实际使用的 PHP 版本选择解决方案如果是 PHP 7.2(路径显示为 /www/server/php/72/)# 安装 zip 扩展sudo apt-get install php7.2-zip# 检查 fileinfo 扩展sudo apt-get install php7.2-fileinfo# 重启 PHP 服务sudo service php7.2-fpm restart如果是 PHP 8.0(路径显示为 /www/server/php/80/)# 安装 zip 扩展sudo apt-get install php8.0-zip# 检查 fileinfo 扩展sudo apt-get install php8.0-fileinfo# 重启 PHP 服务sudo service php8.0-fpm restart3. 修复 PHP 配置文件
编辑 php.ini 文件(根据您的 PHP 版本):
# 对于 PHP 7.2sudo nano /www/server/php/72/etc/php.ini# 对于 PHP 8.0sudo nano /www/server/php/80/etc/php.ini
查找并确保以下行正确(移除重复或错误的扩展引用):
extension=zip.soextension=fileinfo.so; 移除或注释掉以下错误行; extension=ixed.8.0.lin4. 检查扩展目录权限sudo chmod -R 755 /www/server/php/72/lib/php/extensions/sudo chmod -R 755 /www/server/php/80/lib/php/extensions/5. 验证扩展是否加载php -m | grep zipphp -m | grep fileinfo6. 清除 PHP 缓存sudo service php-fpm restart# 或者特定版本sudo service php7.2-fpm restartsudo service php8.0-fpm restart7. 针对 Laravel 项目的额外检查
确保项目使用的 PHP 版本与命令行一致:
# 检查项目使用的 PHP 版本composer show -p | grep php常见问题排查
  • 如果找不到软件包:
    sudo add-apt-repository ppa:ondrej/phpsudo apt-get update
  • 如果扩展已安装但仍报错:
    # 重新安装扩展sudo apt-get install --reinstall php8.0-zip php8.0-fileinfo
  • 如果使用宝塔面板:
    • 通过宝塔面板的 PHP 管理界面安装缺失扩展
    • 确保网站设置中选择了正确的 PHP 版本

完成验证
最后验证问题是否解决:
php artisan --version宝塔面板安装 PHP zip 和 fileinfo 扩展的完整指南
在宝塔面板中安装 PHP 扩展非常简单,以下是详细步骤:
方法一:通过宝塔图形界面安装1. 登录宝塔面板
访问您的宝塔面板地址(通常是 http://服务器IP:8888)并登录
2. 进入 PHP 管理页面
  • 在左侧导航栏点击「软件商店」
  • 找到已安装的 PHP 版本(如 PHP-7.2、PHP-8.0 等)
  • 点击对应 PHP 版本的「设置」按钮
3. 安装扩展
  • 在 PHP 设置页面切换到「安装扩展」选项卡
  • 找到「zip」和「fileinfo」扩展
  • 分别点击对应的「安装」按钮
4. 重启 PHP 服务
安装完成后,点击「服务」选项卡中的「重启」按钮
方法二:通过 SSH 命令行安装(备用方案)
如果图形界面安装失败,可以通过 SSH 连接服务器执行:
# 进入宝塔的 PHP 扩展目录cd /www/server/php/72/src/ext  # 请将72替换为您实际使用的PHP版本# 安装 zip 扩展wget https://pecl.php.net/get/zip-1.20.0.tgztar -zxvf zip-1.20.0.tgzcd zip-1.20.0/www/server/php/72/bin/phpize  # 替换为您的PHP路径./configure --with-php-config=/www/server/php/72/bin/php-configmake && make install# 安装 fileinfo 扩展cd /www/server/php/72/src/extwget https://pecl.php.net/get/fileinfo-1.0.5.tgztar -zxvf fileinfo-1.0.5.tgzcd fileinfo-1.0.5/www/server/php/72/bin/phpize./configure --with-php-config=/www/server/php/72/bin/php-configmake && make install# 添加到 php.iniecho "extension=zip.so" >> /www/server/php/72/etc/php.iniecho "extension=fileinfo.so" >> /www/server/php/72/etc/php.ini# 重启 PHP/etc/init.d/php-fpm-72 restart  # 根据实际版本调整
我们使用的是8.0
执行到最后 提示7.2已经输出了 在目录,并且成功安装完成。
但是 实际我们是安装了有扩展的,因此问题来了
验证安装是否成功
  • 在宝塔面板创建 PHP 探针:
    • 点击「网站」→ 选择您的网站 → 「设置」→ 「PHP探针」
    • 查看「已编译扩展」列表中是否有 zip 和 fileinfo
  • 或者通过 SSH 执行:
    php -m | grep zipphp -m | grep fileinfo
常见问题解决1. 安装按钮灰色不可点击
  • 确保您使用的是 PHP 官方版本(非极速安装版)
  • 尝试先卸载再重新安装 PHP
2. 安装失败提示依赖缺失# 安装编译依赖yum install -y libzip-devel  # CentOS# 或apt-get install -y libzip-dev  # Ubuntu/Debian3. 安装后仍不生效
  • 检查 php.ini 文件是否已添加扩展
  • 确保重启了 PHP 服务
  • 查看 PHP 错误日志:/www/server/php/72/var/log/php-fpm.log
注意事项
  • 操作前建议先备份网站数据
  • 不同 PHP 版本可能需要不同版本的扩展
  • 生产环境建议在低峰期进行操作
  • 如果使用 Laravel,安装后需要清除缓存:php artisan config:clearphp artisan cache:clear
然后其实都提示安装了,包括7.2也是安装的
解决宝塔面板 PHP 扩展加载错误问题
您看到扩展已安装但仍报错的问题,主要是因为 PHP 配置文件错误地引用了不存在的扩展路径,以及存在 PHP 版本混淆的情况。以下是系统化的解决方案:
问题根源分析
  • PHP 版本冲突:系统中同时存在 PHP 7.2 和 PHP 8.0 的配置混用
  • 错误的扩展引用:
    • 尝试加载不存在的 zip.so (PHP 7.2)
    • 尝试加载不兼容的 fileinfo.so (PHP 8.0)
    • 尝试加载不存在的 ixed.8.0.lin (加密扩展)
  • 路径配置错误:php.ini 中指定的扩展路径与实际路径不符
完整解决方案第一步:确定当前使用的 PHP 版本# 查看当前命令行使用的 PHP 版本php -v# 查看宝塔面板中网站使用的 PHP 版本cat /www/server/panel/vhost/nginx/您的网站.conf | grep php-cgi第二步:清理错误的扩展配置
  • 编辑 php.ini 文件:
    # 对于 PHP 7.2nano /www/server/php/72/etc/php.ini# 对于 PHP 8.0nano /www/server/php/80/etc/php.ini
  • 查找并删除或注释以下行:
    ; 移除或注释这些错误配置; extension=zip.so; extension=/www/server/php/80/lib/php/extensions/no-debug-non-zts-20200930/fileinfo.so; extension=ixed.8.0.lin
第三步:正确安装和配置扩展方法一:通过宝塔面板重新安装
  • 进入宝塔面板 → 软件商店 → 找到对应的 PHP 版本
  • 点击「设置」→「安装扩展」
  • 先卸载 zip 和 fileinfo 扩展
  • 然后重新安装这两个扩展
很神奇的就是
方法二:手动修复(如果面板操作无效)# 对于 PHP 7.2cd /www/server/php/72/src/extrm -rf zip-* fileinfo-*wget https://pecl.php.net/get/zip-1.20.0.tgzwget https://pecl.php.net/get/fileinfo-1.0.5.tgztar -zxvf zip-1.20.0.tgztar -zxvf fileinfo-1.0.5.tgzcd zip-1.20.0/www/server/php/72/bin/phpize./configure --with-php-config=/www/server/php/72/bin/php-configmake && make installcd ../fileinfo-1.0.5/www/server/php/72/bin/phpize./configure --with-php-config=/www/server/php/72/bin/php-configmake && make install
基本上 面板无效 我们手动来试试

只能手动
这回显示ok了
第四步:正确配置 php.ini; 对于 PHP 7.2extension=zip.soextension=fileinfo.so; 对于 PHP 8.0(如果需要); extension=zip; extension=fileinfo
这回我们检查下 php. ini 配置文件
果然有2个 ,带引号的 是错误的。
然后我们针对php8.0版本再次重复一遍
第五步:修复环境变量和软链接# 检查实际扩展目录ls /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/# 如果扩展存在但名称不对,创建软链接cd /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/ln -s zip.so.1.0 zip.soln -s fileinfo.so.1.0 fileinfo.so# 更新动态链接库缓存ldconfig第六步:重启服务# 重启 PHP 和 Web 服务器/etc/init.d/php-fpm-72 restart/etc/init.d/nginx restart再次使用重启![](https://doc2.youyacao.com/server ... 32b9c73cea459fffe78)这里又出现个 新问题 但是这个问题 在另一篇讲了不过 重启 是生效了 至少 安装生效了# 或者使用宝塔面板的重启功能验证修复结果php -m | grep -E 'zip|fileinfo'php -i | grep extension_dirphp --ini
我们验证修复
能检测到 说明问题已经解决,接下来解决下一个问题
常见问题排查
  • 如果仍然报错:
    # 检查扩展文件是否存在ls -la /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/zip.so# 检查文件权限chmod 755 /www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718/*.so
  • 如果出现版本冲突:
    # 确保命令行和网站使用相同PHP版本update-alternatives --config php
  • 如果使用宝塔多版本PHP:
    • 在宝塔面板 → 网站 → 对应网站设置中
    • 确保「PHP版本」选择正确
    • 点击「切换版本」后重启所有服务

预防措施
  • 在宝塔面板中操作 PHP 扩展时,确保:
    • 先停止网站流量
    • 备份当前配置
    • 一次只修改一个扩展
  • 定期检查 PHP 错误日志:
    tail -f /www/server/php/72/var/log/php-fpm.log
通过以上步骤,您应该能彻底解决这个扩展加载错误问题。如果仍有问题,可能需要考虑完全卸载并重新安装特定 PHP 版本。
如果仍有问题,请提供以下信息以便进一步诊断:
  • php -v 的输出
  • php --ini 的输出
  • /www/server/php/72/etc/php.ini 中关于扩展加载的部分内容

优雅草论坛2022年8月11日大改,优雅草论坛变回只服务于客户的提问交流论坛,详情查看优雅草8月11日大改,原因详情查优雅草外卖乐关闭

回复

举报 使用道具

全部回复
暂无回帖,快来参与回复吧
yac2025
优雅草的临时工
主题 228
回复 0
粉丝 0