我有一个问题,我在Linux服务器上安装'Archive_Zip 0.1.1',但是当我尝试运行脚本来创建zip文件时,它会给出致命的错误
致命错误:在{...}中找不到班级
ZipArchive
我把代码放在哪里
$zip = new ZipArchive;
var_dump($zip);
$res = $zip->open($filename, ZipArchive::OVERWRITE);
if ($res !== TRUE) {
echo 'Error: Unable to create zip file';
exit;
}
if (is_file($src)) {
$zip->addFile($src);
} else {
// echo "<br>" . dirname(__FILE__) . $src;//'/install1';
if (!is_dir($src)) {
$zip->close();
@unlink($filename);
echo 'Error: File not found';
exit;
}
recurse_zip($src, $zip, $path_length);
}
$zip->close();
echo "<br>file name ".$filename;
但它找不到类文件。
请告诉我解决方案。我该怎么做才能解决问题?
我还将php.ini
文件放到脚本所在的文件夹中,但它不起作用。
答案 0 :(得分:169)
要使ZipArchive
class存在,PHP需要安装zip extension。
有关安装说明(Linux和Windows),请参阅this page。
答案 1 :(得分:75)
在使用Ubuntu + nginx + php7的Amazon ec2上,我遇到了同样的问题,使用以下方法解决了这个问题:
<FilesMatch \.php$>
SetHandler x-httpd-php7.0
</FilesMatch>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
答案 2 :(得分:33)
在ubuntu桌面上,我必须这样做。
sudo apt-get install php5.6-zip
这安装了库,但我仍然遇到同样的错误,所以我不得不重启apache:
sudo service apache2 restart
它有效。
答案 3 :(得分:13)
我没有在这里看到它,所以我想在Debian / Ubuntu上添加它,你可能需要在安装相关软件包后启用扩展名。所以:
sudo apt-get install php-zip
sudo phpenmod zip
sudo service apache2 restart
答案 4 :(得分:8)
首先,远程服务器的解决方案:
如果您使用 cpanel ,则可能已安装zip扩展程序但未激活。你需要激活它。在这种情况下,您需要转到 cpanel&gt; <内部软件部分>点击PHP版。然后找 zip 并进行检查。现在保存。
刷新页面。错误应该消失。
注意:如果找不到,请联系服务提供商。他们会为你安装。
答案 5 :(得分:5)
这有效
apt-get install php7.0-zip
,无需手动重启php7.0-fpm
。
开箱
php7.0-zip
(7.0.16-4+deb.sury.org~trusty+1
)...
处理php7.0-fpm
(7.0.11-1+deb.sury.org~trusty+1
)...的触发器php7.0-fpm
停止/等待
php7.0-fpm
开始/运行,流程1572php7.0-fpm
停止/等待
php7.0-fpm
开始/运行,流程1777年 设置php7.0-zip
(7.0.16-4+deb.sury.org~trusty+1
)...
locale:无法将LC_ALL
设置为默认语言环境:没有此类文件或目录使用新版本创建配置文件
/etc/php/7.0/mods-available/zip.ini
处理php7.0-fpm
(7.0.11-1+deb.sury.org~trusty+1
)...的触发器php7.0-fpm
停止/等待
php7.0-fpm
开始/运行,流程2354
php7.0-fpm
停止/等待
php7.0-fpm
开始/运行,处理2397
答案 6 :(得分:4)
您还需要使用zip支持编译PHP。手册说明如下:
为了使用这些函数,您必须使用--enable-zip configure选项编译带zip支持的PHP。
仅在服务器上安装正确的扩展是不够的。看看Pekka之前发布的安装说明链接。我的回答只是对他的澄清。
答案 7 :(得分:3)
PHP 5.2.0及更高版本
Linux系统
要使用这些函数,您必须使用--enable-zip configure选项编译带zip支持的PHP。
窗
Windows用户需要在php.ini中启用php_zip.dll才能使用这些功能。
答案 8 :(得分:2)
如果您有WHM可用,则更容易。
登录 WHM 。
转到软件标签下的 EasyApache 4(或您拥有的任何版本)。
在“当前安装的软件包”下单击“自定义”。
转到 PHP扩展程序,搜索类型为“ zip ”(不带引号),
你应该看到3个模块
检查所有这些,
点击蓝色按钮几次以完成此过程。
这对我有用。 谢天谢地,我有WHM可用。
答案 9 :(得分:2)
我在安装 CentOS 和 cPanel 时遇到了相同的问题。我通过cPanel安装了zipArchive软件包,但未按预期工作。 在尝试了许多修补程序后,建议到处都只有下面的内容对我有用。
首先使用以下命令找到正确软件包的名称
yum search zip |grep -i php
然后使用下面的代码。
yum install your_zip_package_name_with_php_version
对于我来说,安装zipArchive的正确代码是
yum install php-pecl-zip.x86_64
我从此链接获得了解决方案。 How can I inslatt zipArchive on PHP 7.2 with CentOS 7?
此安装也以某种方式启用了该软件包,并且还重新启动了影响服务,并且在完成上述代码zipArchive问题的执行后,消失了。
答案 10 :(得分:2)
Centos 6
yum install php-pecl-zip
service httpd restart
答案 11 :(得分:1)
您需要检查PHP版本
如果php版本为5.6,则需要安装php5.7-zip
sudo apt-get install php5.6-zip
然后
sudo service apache2 restart
希望有帮助
答案 12 :(得分:0)
如果您在添加 namespace
后遇到此问题,您可以使用 global
命名空间(反斜杠 \ ) :
$zip = new \ZipArchive;
答案 13 :(得分:0)
如果在使用Docker映像时遇到此错误,并且正在正确调用该类,或者该错误来自最新的库,则可能zip
模块丢失。
假设我们使用docker-compose
,则可以通过运行docker-compose run php php -m
来确认它是否丢失,并查看其中未列出zip
。
要在映像中安装它,请修改Dockerfile
,使其与本示例相同。
FROM php:7.3-apache
RUN set -eux \
&& apt-get update \
&& apt-get install -y libzip-dev zlib1g-dev \
&& docker-php-ext-install zip
然后用docker-compose build php
重建图像,您就很好了。
答案 14 :(得分:0)
对于我的工作,请先审核
php -m
php -version
稍后安装扩展程序
apt-get update
apt-get install php7.2-zip
systemctl restart apache2
答案 15 :(得分:0)
尝试写\ZIPARCHIVE
而不是ZIPARCHIVE
。
答案 16 :(得分:0)
对于PHP 7.x
sudo apt-get install php-zip
对于PHP 5.x
sudo apt-get install php5.x-zip
// (for example sudo apt-get install php5.6-zip)
然后重新启动Apache服务器
sudo service apache2 restart
答案 17 :(得分:0)
在App Engine标准环境中部署wordpress时,我在GCP上遇到了此问题。解决了它:
sudo apt-get install php7.2-zip
答案 18 :(得分:0)
我遇到了同样的问题,并且使用两个命令行解决了该问题:
key length: 32(key to be wrapped)
swkKey length: 32(key used to wrap)
wrappedAppKey size: 48(final wrapped key output).
然后为Apache重新启动Web服务器
sudo apt install php-zip
答案 19 :(得分:-10)
1)您应该使用require
文件ZipArchive
您的文件。
require 'path/to/file/ZipArchive.php';
2)或使用__autoload
类方法。
在PHP 5中,它是一个greate方法__autoload()。
function __autoload($class_name) {
require_once $class_name . '.php';
}
$obj = new MyClass1(); // creating an object without require.