hello-world
webエンジニアのメモ。とりあえずやってみる。

[WordPress]StaticPress-S3プラグイン使用時にエラーになる場合

公開日時

StaticPressで静的ファイルを作成した後、そのファイルをs3にアップロードしてくれる staticpress-s3プラグインをインストールしました。

cd wp-content/plugins
git clone https://github.com/megumiteam/staticpress-s3.git
chown -R apache:apache staticpress-s3

s3のバケット設定を済ませた後、設定画面にアクセスキー等を入力して、再構築を行ったのですが初期化が終わって「フェッチ開始」と表示された後すぐエラーになってしまう現象が発生しました。

(s3バケット設定後、設定画面からs3の項目が消えてしまいました。) とりあえず

tailf /var/log/php-fpm/www-error.log

でログを確認してみると、

[26-Oct-2014 08:53:26 UTC] PHP Fatal error:  Cannot redeclare class Guzzle\Service\ClientInterface in phar:///var/www/vhosts/blog.hello-world.jp.net/wp-content/plugins/staticpress-s3-master/includes/aws.phar/Guzzle/Service/ClientInterface.php on line 16

とのエラーが。

AWSのPHP SDKの中で重複してクラス定義が行われてしまっているとのこと。

調べてみると、AWS PHP SDKの FAQページに「Why am I seeing a "Cannot redeclare class" error?」という項目があり、

  1. Disable APC for CLI - Change the apc.enable_cli INI setting to Off.

  2. Tell APC not to cache phars - Change the apc.filters INI setting to include "^phar://".

  3. Don't use APC - PHP 5.5, for example, comes with Zend OpCache built in. This problem has not been observed with Zend OpCache.

  4. Don't use the phar - You can install the SDK through Composer (recommended) or by using the zip file.

と書かれていました。

どうやらAPCでcacheされてしまうことで上記エラーが発生するようです。

そこで以下のようにapc.iniにapc.filtersを追加。

# /etc/php.d/apc.ini
; Enable apc extension module
extension=apc.so
apc.shm_size=128M
apc.filters="^phar://"

php-fpmに設定を反映

sudo /etc/init.d/php-fpm reload

これで再度StaticPressの設定画面にアクセスするとs3のバケット選択メニューが追加されているので保存先バケットを選択します。

staticpress

一度staticディレクトリを削除して、「再構築」を実行するとs3にアップロードできました。

ハマりました。

参考


Related #Wordpress

[WordPress]Facebookいいねボタンがスタイル崩れを起こした場合の対処法

私の環境だけかもしれないですが一応メモ。

[WordPress]StaticPressで初期化中にエラーになる場合

このブログはnginx + php-fpmを使ったWordpressで動いているのですが、ふとs3に移行しようと思い調べてみたところ「 StaticPress」プラグインを使って静的コンテンツに再構築し、それをs3にアップロードするのが定番のようでした。

Insufficient arguments passed to this XML-RPC Method

WordPressを3.5.1にアップデートした後に、iOSの「Wordpress」アプリからアクセスすると

WordPressの自動バックアップにBackWPupを使う

これまで「バックアップしないとなー」と思いつつやってなかったので重い腰を上げてやってみました。