Ubuntu 16.04已安装PHP zip扩展仍无效,求技术解决方案
我之前在Ubuntu 16.04部署PrestaShop时也遇到过一模一样的问题——明明已经装了zip扩展、重启了Apache,但系统还是固执地提示未安装。给你几个排查和解决的步骤,应该能搞定:
先确认Apache使用的PHP版本和CLI是否一致
很多时候CLI的PHP版本和Apache加载的版本不一样,你用php -v看到的是7.2,但Apache可能还在用Ubuntu 16.04默认的PHP7.0。
可以在网站根目录创建一个phpinfo.php文件,内容如下:<?php phpinfo(); ?>然后通过浏览器访问这个文件,查看页面顶部的PHP版本,再搜索"zip"看扩展是否已经加载。如果版本不是7.2,那问题就出在这了。
切换Apache到PHP7.2模块
如果Apache用的是旧版本PHP,执行以下命令切换:sudo a2dismod php7.0 # 禁用旧版本,根据实际检测到的版本号调整 sudo a2enmod php7.2 sudo systemctl restart apache2之后再刷新phpinfo页面,确认版本和zip扩展状态。
检查Apache对应的php.ini配置
注意CLI的php.ini和Apache的是分开的,你之前修改的可能是CLI的配置。Apache的php.ini路径一般是/etc/php/7.2/apache2/php.ini,打开这个文件搜索extension=zip.so,确保前面没有注释符号;。如果被注释了,去掉;然后保存,再重启Apache:sudo systemctl restart apache2重新安装并注册扩展
有时候扩展安装可能有残留,彻底重装试试:sudo apt-get purge php-zip php7.2-zip sudo apt-get install php-zip php7.2-zip sudo systemctl restart apache2检查扩展文件权限
极端情况下可能是扩展文件权限不足,导致Apache无法加载。从phpinfo里找到extension_dir的路径(比如/usr/lib/php/20170718/),然后检查zip.so的权限:ls -l /usr/lib/php/20170718/zip.so如果权限不是
-rw-r--r--,执行以下命令修正:sudo chmod 644 /usr/lib/php/20170718/zip.so sudo systemctl restart apache2
按照这些步骤一步步排查,应该能解决PrestaShop的zip扩展检测问题。
内容的提问来源于stack exchange,提问作者user9115388

