Posted by & filed under server.


WordPress のプラグインのアップグレードが来てたので、アップグレードしようと、リンクをクリックした。

が、次のようなエラーを吐いてアップグレードしてくれない。

PCLZIP_ERR_BAD_FORMAT (-10)

プラグインのアーカイブをダウンロードはしてきてるけど、展開が出来てない様だ。

初めは、丁度少し前に portupgrade -a したばかりだったので、互換性の問題が出てるのかなと思って、関連してそうな archives/php5-zip や archives/unzip を再インストールしてみた。

が、改善せず。 WordPress 固有の問題なのかなと思って、ググってみると、公式フォーラムに次のような記述を発見した。

Try this version of http.php. Download that and install it over wp-includes/http.php. Does that help?

via: WordPress › Support » WordPress 2.8 Plugin Update Problem

書かれてる通り、 wp-includes/http.php を最新の物に書き換えてみた。が、改善せず。

どうやら、この問題は WordPress 2.8 固有の問題であり、この問題は 2.8.1 で解決されているようだ。

[Solved]Incompatible archive PCLZIP_ERR_BAD_FORMAT (-10) : Invalid archive structure

さらに調べていくと、やっと見つけた。

Hello, I had the same problem since 2.8.2, and I solved it by commenting out mbstring.func_overload in my php.ini file:

; mbstring.func_overload = 7

Upgrades and uploads worked perfectly after that.

via: WordPress › Support » Incompatible archive: PCLZIP_ERR_BAD_FORMAT (-10), WordPress said: PCLZIP_ERR_BAD_FORMAT (-10)

どうやら、 mbstring.func_overload が悪さをしていたようだ。 php.ini を編集し、 該当部分をコメントアウトするか、 値を 0 にセットする。

すると、きちんとアップグレードしてくれるようになった。

mbstring.func_overload は基本的に無効にしておいた方が良さそうだ。