我有一个问题,我在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文件放在脚本所在的文件夹中,但它不起作用。
1)您应该要求您的文件与ZipArchive文件。
require 'path/to/file/ZipArchive.php';
2)或使用类的__autoload方法。
在PHP 5中,它是一个伟大的方法__autoload()。
function __autoload($class_name) {
require_once $class_name . '.php';
}
$obj = new MyClass1(); // creating an object without require.
http://www.php.net/manual/en/language.oop5.autoload.php
这个工作
apt-get install php7.0-zip
并且不需要手动重启php7.0-fpm。
Unpacking php7.0-zip (7.0.16-4+deb.sury.org~trusty+1) ...
Processing triggers for php7.0-fpm (7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpm stop/waiting
php7.0-fpm start/running, process 1572
php7.0-fpm stop/waiting
php7.0-fpm start/running, process 1777
Setting up php7.0-zip (7.0.16-4+deb.sury.org~trusty+1) ...
locale: Cannot set LC_ALL to default locale: No such file or directory
Creating config file /etc/php/7.0/mods-available/zip.ini with new version
Processing triggers for php7.0-fpm (7.0.11-1+deb.sury.org~trusty+1) ...
php7.0-fpm stop/waiting
php7.0-fpm start/running, process 2354
php7.0-fpm stop/waiting
php7.0-fpm start/running, process 2397
我有同样的问题与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
我从这个链接得到了解决方案。
我怎么能inslatt zipArchive在PHP 7.2与CentOS 7?
这个安装以某种方式启用了这个包,它也重新启动了影响服务,在上述代码执行完成后,zipArchive问题就消失了。
适用于Centos 7和Remi上的PHP 7.3
搜索zip扩展名:
$ yum search php73 | grep zip
php73-php-pecl-zip.x86_64 : A ZIP archive management extension
扩展名是php73-php-pecl-zip.x86_64。要在运行单一版本PHP的服务器上安装它,删除php73前缀:
$ sudo yum --enablerepo=remi-php73 install php-pecl-zip #for server running single PHP7.3 version
$ #sudo yum --enablerepo=remi-php73 install php73-php-pecl-zip # for server running multiple PHP versions
重启PHP:
$ sudo systemctl restart php-fpm
检查已安装的PHP扩展:
$ php -m
[PHP Modules]
apcu
bcmath
bz2
...
zip
zlib
如果在使用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重新构建映像,就可以开始了。