web-dev-qa-db-ja.com

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

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ファイルを配置しましたが、機能しません。

141
Parag Chaure

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

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

172
Pekka 웃

Ubuntu + nginx + php7を使用したAmazon ec2では、同じ問題が発生しました。以下を使用して解決しました。

Sudo apt-get install php7.0-Zip

77
star18bit

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

Sudo apt-get install php5.6-Zip

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

Sudo service Apache2 restart

そしてそれは働いた。

33
Mubashar Abbas

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

Sudo apt-get install php-Zip
Sudo phpenmod Zip
Sudo service Apache2 restart
13
lorenzo-s

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

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

画像のように見えるはずです。enter image description here

ページの更新。エラーが消えます。

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

8

これは働いた

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 stop/waiting
php7.0-fpm開始/実行、プロセス1572
php7.0-fpm stop/waiting
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を作成しています
php7.0-fpm7.0.11-1+deb.sury.org~trusty+1)のトリガーを処理しています...
php7.0-fpm stop/waiting
php7.0-fpm開始/実行、プロセス2354
php7.0-fpm stop/waiting
php7.0-fpm開始/実行、プロセス2397

5
prosti

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

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

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

4
Jeremy

PHP 5.2.0以降

Linuxシステム

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

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

3

Centos 6

yum install php-pecl-Zip

service httpd restart
2
zzapper

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

このリンクから解決策を見つけました。 CentOS 7でPHP 7.2にzipArchiveをインストールする方法は?

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

2
antonD

WHMを使用できる場合は簡単です。

WHMにログインします。

ソフトウェアタブの下のEasyApache 4(またはあなたが持っているバージョン)に移動します。

現在インストールされているパッケージの下でカスタマイズをクリック

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

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

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

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

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

2
temo

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

Sudo apt install php-Zip

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

Sudo service Apache2 restart

0
AboElnouR