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
ファイルを配置しましたが、機能しません。
ZipArchive
class が存在するためには、PHPに Zip拡張 がインストールされている必要があります。
インストール手順については、 このページ を参照してください(LinuxとWindowsの両方)。
Ubuntu + nginx + php7を使用したAmazon ec2では、同じ問題が発生しました。以下を使用して解決しました。
Sudo apt-get install php7.0-Zip
Ubuntuのデスクトップで、私はやらなければなりませんでした。
Sudo apt-get install php5.6-Zip
これによりライブラリがインストールされましたが、同じエラーが引き続き発生するため、次を使用してApacheを再起動する必要がありました。
Sudo service Apache2 restart
そしてそれは働いた。
ここには表示されないので、Debian/Ubuntuで、関連パッケージのインストール後にenable拡張機能を追加する必要があるかもしれません。そう:
Sudo apt-get install php-Zip
Sudo phpenmod Zip
Sudo service Apache2 restart
これは働いた
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
stop/waitingphp7.0-fpm
開始/実行、プロセス1572php7.0-fpm
stop/waitingphp7.0-fpm
開始/実行、プロセス1777php7.0-Zip
(7.0.16-4+deb.sury.org~trusty+1
)をセットアップしています...
ロケール: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
stop/waitingphp7.0-fpm
開始/実行、プロセス2354php7.0-fpm
stop/waitingphp7.0-fpm
開始/実行、プロセス2397
Zipサポートを使用してPHPをコンパイルする必要もあります。マニュアルには次のように書かれています:
これらの関数を使用するには、-enable-Zip configureオプションを使用して、PHPをZipサポート付きでコンパイルする必要があります。
サーバーに正しい拡張機能をインストールするだけでは不十分です。以前に投稿したPekkaのインストール手順のリンクをご覧ください。私の答えは彼の説明です。
PHP 5.2.0以降
Linuxシステム
これらの関数を使用するには、-enable-Zip configureオプションを使用して、PHPをZipサポート付きでコンパイルする必要があります。
窓
Windowsユーザーは、これらの関数を使用するためにphp.ini内でphp_Zip.dllを有効にする必要があります。
Centos 6
yum install php-pecl-Zip
service httpd restart
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の問題はなくなりました。
WHMを使用できる場合は簡単です。
WHMにログインします。
ソフトウェアタブの下のEasyApache 4(またはあなたが持っているバージョン)に移動します。
現在インストールされているパッケージの下でカスタマイズをクリック。
PHP拡張機能に移動し、検索タイプで "Zip"(引用符なし)、
3つのモジュールが表示されます
それらをすべてチェックし、
青いボタンを数回クリックしてプロセスを終了します。
これは私のために働いた。ありがたいことに、私はWHMを利用できました。
同じ問題があり、2つのコマンドラインを使用して解決しました。
Sudo apt install php-Zip
次に、ApacheのWebサーバーを再起動します
Sudo service Apache2 restart