phpのzipをインストールしましたが機能していません。
環境はcentOS7 php7.1 nginx1.12 です。
zipをインストールしました。
yum install php-devel
yum install zlib-devel
pecl install zip
インストール後php.iniに
extension=zip.so
を追加し、nginxを再起動しました。
コマンド上でphp -mを行うと
[PHP Modules]
zip
という形で認識できています。
しかしながら
phpinfo(); で確認すると
Zip Pierre-Alain Joye, Remi Collet
になっています。
Zip enabled になっていません。
確認のため、下記のコードでテストしましたが動作せず、zipが機能していません。
php
1 2<?php 3 4$compress_file = './sample.txt'; 5$file = './compress.zip'; 6 7// 圧縮・解凍するためのオブジェクト生成 8$zip = new ZipArchive(); 9 10$result = $zip->open($file, ZipArchive::CREATE); 11if($result === true) 12{ 13 // 圧縮 14 $zip->addFile($compress_file); 15 16 // ファイルを生成 17 $zip->close(); 18} 19?> 20
何か対応策をご教示いただければと思います。
よろしくお願い致します。
エラーがでてないならでる設定にしましょう
ありがとうございます。
```
<?php
$compress_file = './sample.txt';
$file = './compress.zip';
echo 'ここまでOK<BR>';
// 圧縮・解凍するためのオブジェクト生成
$zip = new ZipArchive();
echo 'ZipArchive確認クリア!<BR>';
$result = $zip->open($file, ZipArchive::CREATE);
if(!$result){
echo 'エラーコード確認!<BR>';
echo 'error code : '.$result;
exit();
}
elseif($result === true)
{
// 圧縮
echo '圧縮できたかな!<BR>';
$zip->addFile($compress_file);
// ファイルを生成
$zip->close();
}
?>
```
上記のように、どこに原因があるか確認したところ、最終の圧縮工程まで進んでいることがわかりました。
従来、ドキュメント直下(public_html 755)に置いていたため、別のディレクトリ(777)を作り
その中で確認したところ、無事、compress.zip ができていることが確認できました。
原因は、ディレクトリの権限だったようです。
ただ、phpinfo上は
Zip Pierre-Alain Joye, Remi Collet のままであり、Zip enabled になっていません。
でも、動いてはいるようです。
phpinfoがなぜ enabled になるのかは不明ですが、zipが動かないという事象は解決致しましたので
クローズドさせていただきます。
ありがとうござていました。
回答2件
あなたの回答
tips
プレビュー