217

Linuxサーバーに「Archive_Zip0.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ましたが、動作しません。

4

23 に答える 23

247

ZipArchiveクラスが存在するためには、PHPにzip拡張機能がインストールされている必要があります。

インストール手順(LinuxとWindowsの両方)については、このページを参照してください。

于 2010-10-06T12:49:51.843 に答える
91

Ubuntu + nginx +php7を搭載したAmazonec2で、同じ問題が発生しました。次の方法で解決しました。

sudo apt-get install php7.0-zip

于 2016-05-06T06:56:10.667 に答える
41

ubuntuデスクトップでは、やらなければなりませんでした。

sudo apt-get install php5.6-zip

これでライブラリがインストールされましたが、それでも同じエラーが発生し続けたため、次を使用してapacheを再起動する必要がありました。

sudo service apache2 restart

そしてそれはうまくいった。

于 2016-10-28T12:10:29.037 に答える
23

ここには表示されていないので、Debian / Ubuntuで、関連パッケージをインストールした後に拡張機能を有効にする必要があるかもしれないことを追加したいと思います。それで:

sudo apt-get install php-zip
sudo phpenmod zip
sudo service apache2 restart
于 2017-10-16T06:54:04.400 に答える
21

まず第一に、リモートサーバーのソリューション:

cpanelを使用している場合は、zip拡張機能がインストールされていても、アクティブ化されていない可能性があります。あなたはそれをアクティブにする必要があります。この場合、cpanel>ソフトウェアセクション内>PHPバージョンをクリックする必要があります。次に、zipを見つけて確認します。ここで保存します。

画像のように見えるはずです。 ここに画像の説明を入力してください

ページの更新。エラーが消えるはずです。

注:見つからない場合は、サーバープロバイダーに連絡してください。彼らはあなたのためにインストールします。

于 2017-11-17T02:39:20.743 に答える
9

Centos 6

またはRHELベースのフレーバー

yum install php-pecl-zip

service httpd restart
于 2018-10-10T13:57:04.007 に答える
7

WHMを利用できる場合は、より簡単です。

WHMにログインします。

[ソフトウェア]タブでEasyApache4(または任意のバージョン)に移動します。

[現在インストールされているパッケージ]で、 [カスタマイズ]をクリックします

PHP拡張機能に移動し、検索タイプ「zip」(引用符なし)で、

3つのモジュールが表示されます

それらすべてをチェックしてください

青いボタンを数回クリックして、プロセスを終了します。

これは私のために働いた。ありがたいことに、WHMを利用できます。

于 2018-05-15T11:36:49.990 に答える
5

また、zipをサポートするPHPをコンパイルする必要があります。マニュアルには次のように書かれています。

これらの関数を使用するには、-enable-zip設定オプションを使用してzipサポート付きのPHPをコンパイルする必要があります。

サーバーに正しい拡張機能をインストールするだけでは不十分です。以前に投稿されたPekkaのインストール手順のリンクをご覧ください。私の答えは彼の説明にすぎません。

于 2010-10-06T13:08:07.243 に答える
5

これはうまくいきました

apt-get install php7.0-zip

php7.0-fpm手動で再起動する必要はありません。

解凍php7.0-zip7.0.16-4+deb.sury.org~trusty+1)...
トリガーの処理php7.0-fpm7.0.11-1+deb.sury.org~trusty+1)...
php7.0-fpm停止/待機
php7.0-fpm開始/実行、プロセス1572
php7.0-fpm停止/待機
php7.0-fpm開始/実行、プロセス1777
セットアップphp7.0-zip7.0.16-4+deb.sury.org~trusty+1)...
ロケール:LC_ALLデフォルトのロケールに設定できません:そのようなファイルはありませんまたはディレクトリ

/etc/php/7.0/mods-available/zip.ini新しいバージョンで構成ファイルを作成する( )
のトリガーを処理しています...停止/待機開始/実行中、プロセス2354停止/待機中開始/実行中、プロセス2397 php7.0-fpm7.0.11-1+deb.sury.org~trusty+1
php7.0-fpm
php7.0-fpm
php7.0-fpm
php7.0-fpm

于 2017-03-13T19:22:20.373 に答える
5

CentOScPanelがインストールされたサーバーでも同じ問題が発生しました。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

私はこのリンクから解決策を得ました。 CentOS7を使用してPHP7.2にzipArchiveをインストールするにはどうすればよいですか?

そして、このインストールはどういうわけかそのパッケージも有効にし、効果的なサービスも再起動し、上記のコードの実行が完了した後、zipArchiveの問題はなくなりました。

于 2018-09-02T09:52:24.143 に答える
5

PHP7.xの場合

sudo apt-get install php-zip

PHP5.xの場合

sudo apt-get install php5.x-zip
// (for example sudo apt-get install php5.6-zip)

次に、Apacheサーバーを再起動します

sudo service apache2 restart
于 2019-12-06T05:32:49.917 に答える
4

Remi上のCentos7およびPHP7.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
于 2020-01-07T03:51:02.053 に答える
3

PHP5.2.0以降

Linuxシステム

これらの関数を使用するには、-enable-zip設定オプションを使用してzipサポート付きのPHPをコンパイルする必要があります。

ウィンドウズ

Windowsユーザーは、これらの関数を使用するために、php.ini内でphp_zip.dllを有効にする必要があります。

于 2013-07-01T11:39:49.307 に答える
3

App Engine Standard環境にWordPressをデプロイしているときに、GCPでこの問題に直面しました。これはそれを解決しました:

sudo apt-get install php7.2-zip
于 2019-10-18T03:55:01.863 に答える
2

私の仕事のために、最初のレビュー

   php -m
   php -version

後で拡張機能をインストールします

apt-get update 
apt-get install php7.2-zip
systemctl restart apache2
于 2020-10-14T22:01:41.833 に答える
2

PHP7.4の場合>ZipArchiveはデフォルトでは存在しなくなったため、インストールして構成する必要があります。

プロジェクトに含めることができるライブラリを使用することを強くお勧めします-https://github.com/zanysoft/laravel-zipのようにこの ライブラリはネイティブZipArchiveの単なるラッパーです

于 2021-09-15T08:13:31.867 に答える
1

CentOSベースのサーバーの使用

yum install php-pecl-zip.x86_64

次のコマンドを実行して有効にします。echo "extension=zip.so" >> /etc/php.d/zip.ini

于 2020-01-07T11:10:14.403 に答える
1

PHPのバージョンを確認する必要があります

phpのバージョンが5.6の場合、php5.7-zipをインストールする必要があります

sudo apt-get install php5.6-zip

その後

sudo service apache2 restart

それが役に立てば幸い

于 2020-05-12T05:16:32.887 に答える
1

Dockerイメージの使用中にこのエラーが発生し、クラスを適切に呼び出している場合、またはエラーが最新のライブラリから発生している場合は、zipモジュールが欠落している可能性があります。

を使用すると仮定すると、たとえばをdocker-compose実行することで欠落していることを確認でき、リストされていないことがわかります。docker-compose run php php -mzip

イメージにインストールするに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が整います。

于 2020-12-09T08:43:14.950 に答える
0

同じ問題が発生し、2つのコマンドラインを使用して解決しました。

sudo apt install php-zip

次に、Apacheの場合はWebサーバーを再起動します

sudo service apache2 restart

于 2019-03-11T13:08:14.873 に答える
0

\ZIPARCHIVEの代わりに書いてみてくださいZIPARCHIVE

于 2020-02-09T12:27:20.163 に答える
0

名前空間

追加後にこの問題が発生した場合は、名前空間(バックスラッシュ\namespaceを使用できます。global

$zip = new \ZipArchive;
于 2021-06-18T22:02:00.700 に答える
-13

1)requireファイルをファイルと一緒に作成する必要があり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

于 2010-10-06T12:52:51.660 に答える