致命的なエラー:クラス 'ZipArchive'が見つかりません


181

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スクリプトが置かれているフォルダにもファイルを入れましたが、うまくいきません。


7
Ubuntuでの使用sudo apt-get install php7.2-zip
Eric Korolev

1
@EricKorolevがE: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'php 7.2でubuntu 14.04 を使用する
Muhammad Omer Aslam

1
Debian 10では、それは単にapt-get install php-zipです。
aexl

この投稿を表示できます:stackoverflow.com/a/60482998/4806585
VishalParkash

回答:


207

以下のためにZipArchiveクラスが存在すると、PHPは持っている必要がありますジップ拡張がインストールされています。

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


1
多分私は私が何をしているのか理解できません。私はあなたが研究のために提供し、台本を完成させるために提供するインクに与えられている例を使用します。私のPC(ローカルホスト)で正常に動作し、サーバーでは動作しません。そのための提案をお願いします
Parag Chaure

49
apt-getを使用したUbuntuサーバー上sudo apt-get install php7.0-zip
Luddig

9
シンプルなソリューション:sudo apt-get install php7.0-zip。次に、ファイルを編集します/etc/php/7.0/cli/php.ini(「動的拡張」セクションで、行を追加しますextension=zip.so)。これで解決するはずです
JonyD

21
Dockerの場合docker-php-ext-install zip
David Riccitelli 2016年

11
後にUbuntuのサーバ上@Luddigで述べたようにsudo apt-get install php7.0-zip、あなたは、Apacheサーバを再起動する必要がありますsudo systemctl restart apache2
Hashmiさん

82

Ubuntu + nginx + php7を使用するAmazon ec2では、同じ問題があり、次のようにして解決しました:

sudo apt-get install php7.0-zip


apt-get install php7.0-xslの後に問題が発生しました... apt-get install php7.0-zipだけで解決できます
bortunac

sudo apt-get install php7.1-zipUbuntuの/ php7.1のため
ニノŠkopac

これは機能せずphp 7.2、常に言うE: Unable to locate package php7.2-zip E: Couldn't find any package by regex 'php7.2-zip'
Muhammad Omer Aslam

39

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

sudo apt-get install php5.6-zip

これによりライブラリがインストールされましたが、引き続き同じエラーが発生するため、次を使用してApacheを再起動する必要がありました。

sudo service apache2 restart

そしてそれは働いた。


1
再起動するApacheは、@ pekkaのソリューションと組み合わせたときにそれを行いました
gthuo 2018

18

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

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

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

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

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


これでうまくいきました。テンプレートビルダーを使用していて、エクスポートされませんでした。私はzipチェックボックスをチェックし、保存して出来上がりました。ありがとう、
ケイラン

16

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

sudo apt-get install php-zip
sudo phpenmod zip
sudo service apache2 restart

2
php7.0-zipPHP 7のインストール
AnthonyB

アパッチの再起動を忘れないでください!!
zzapper 2018年

1
PHP 7.1の場合はphp7.1-zip、PHP 7.2の場合はphp7.2-zipをインストールします。
ネオ

6

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

WHMにログインします。

行くEasyApache 4(または任意のバージョン、uは持っている)の下でソフトウェアのタブ。

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

PHP Extensionsに移動し、検索タイプ " zip "(引用符なし)で、

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

それらすべてをチェックし、

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

これでうまくいきました。ありがたいことに、利用可能なWHMを用意しました。


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


4

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

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

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


はい、しかし、phpがzipサポート付きで実行されるように、サーバーでこのコマンドをどこで実行すればよいですか
Parag Chaure

あなたが管理するサーバーですか?もしそうなら、私はそれがPHPをインストールするときのmakeコマンドの一部であると信じています。それがあなたが制御するサーバーでないなら、あなたのための唯一のオプションはsys管理者にそれをやらせることを試みることです。申し訳ありませんが、これ以上正確には言えません。LinuxサーバーにPHPを最初からインストールしたことはありません。
ジェレミー

4

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

私はこのリンクから解決策を得ました。 CentOS 7のPHP 7.2でzipArchiveを挿入するにはどうすればよいですか?

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


4

Centos 6

yum install php-pecl-zip

service httpd restart

1
ありがとうございました。php-pecl-zipをインストールしましたが、httpdを再起動していません。最後にあなたの答えが見つかりました!
Ngoc Nam

3

PHP 5.2.0以降

Linuxシステム

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

ウィンドウズ

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


3

App Engineスタンダード環境にワードプレスをデプロイしているときに、GCPでこの問題に直面しました。これはそれを解決しました:

sudo apt-get install php7.2-zip

3

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

1

Centos 7およびPHP 7.3 for Remi

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

1

CentOSベースのサーバーで使用する場合

yum install php-pecl-zip.x86_64

以下を実行して有効にします。 echo "extension=zip.so" >> /etc/php.d/zip.ini


0

私は同じ問題を抱えていて、それは2つのコマンドラインを使用して解決しました:

sudo apt install php-zip

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

sudo service apache2 restart


0

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


0

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

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

sudo apt-get install php5.6-zip

その後

sudo service apache2 restart

それが役に立てば幸い


-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


ZipArchiveファイルをどのように含めたり、必要とするのですか?
Parag Chaure、2010年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.