MW211 EXIT

devlog
PECL/実録あるパッケージのインストール
2013年10月14日
「zip」パッケージをインストールした手順(といっても後述の通りオチあり)。

まず、「http://pecl.php.net」で検索して、ダウンロードコーナーを探す。

「http://pecl.php.net/package/zip/1.12.2/windows」と判明したいので
今回は「PHP 5.3.17」にインストールする予定なので
「PHP 5.3」の「5.3 Thread Safe (TS) x86」を選択し
「php_zip-1.12.2-5.3-ts-vc9-x86.zip」をダウンロードする。

これを解凍し、中から「php_zip.dll」を取り出して
「C:\Program Files (x86)\PHP\ext」に置く。

「php.ini」を以下に書き換えて、Apache再起動。
┌──────────────────────────────────────┐
│[PHP]                                                                       │
│;;;;;;;;;;;;;;;;;;                                                          │
│; Fopen wrappers ;                                                          │
│;;;;;;;;;;;;;;;;;;                                                          │
│extension_dir="C:\Program Files (x86)\PHP\ext"                              │
└──────────────────────────────────────┘

ちなみに、「php.ini」に指定を追加する必要はないようだ。
┌──────────────────────────────────────┐
│[PHP]                                                                       │
│;;;;;;;;;;;;;;;;;;;;;;                                                      │
│; Dynamic Extensions ;                                                      │
│;;;;;;;;;;;;;;;;;;;;;;                                                      │
│extension=php_zip.dll                                                       │
└──────────────────────────────────────┘
もし、追加すると二重呼出エラーが発生する。
┌──────────────────────────────────────┐
│C:\Program Files (x86)\PHP>php -i|clip                                      │
│Warning: Module 'zip' already loaded in Unknown on line 0                   │
└──────────────────────────────────────┘

以下のようなテストプログラムを動かすと、ZIP圧縮ファイルの中身一覧が表示される。
┌──────────────────────────────────────┐
│$zip = zip_open('C:\xxxx\xxxx.zip');                                        │
│$entry = zip_read($zip);                                                    │
│while ($entry) {                                                            │
│    echo zip_entry_name($entry) . "\n";                                     │
│    $entry = zip_read($zip);                                                │
│}                                                                           │
│zip_close($zip);                                                            │
└──────────────────────────────────────┘

っていうか、「php_zip.dll」を削除してみたが、上記はそのまま動く。

よくよく調べてみると、標準でPHPに付随していたようだ。
┌──────────────────────────────────────┐
│C:\Program Files (x86)\PHP>php -i|clip                                      │
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│zip                                                                         │
│                                                                            │
│Zip => enabled                                                              │
│Extension Version => $Id: 75f98b591f6e5b656786b38e42f0ca759a8eca80 $        │
│Zip version => 1.11.0                                                       │
│Libzip version => 0.10.1                                                    │
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
└──────────────────────────────────────┘
ということで、他で仕切り直し。

ちなみに、「pecl install zip」でインストールを試みるとエラーとなる。
┌──────────────────────────────────────┐
│C:\Program Files (x86)\PHP>pecl install zip                                 │
│downloading zip-1.10.2.tgz ...                                              │
│Starting to download zip-1.10.2.tgz (236,912 bytes)                         │
│.................................................done: 236,912 bytes        │
│61 source files, building                                                   │
│WARNING: php_bin .\php.exe appears to have a suffix .exe, but config        │
│ variable php_suffix does not match                                         │
│ERROR: The DSP zip.dsp does not exist.                                      │
└──────────────────────────────────────┘
分類:PECL