WordPress3.6をSQLiteで使う 【pdo-for-wordpress,動作したプラグイン】

  • 投稿 : 2012-01-21
  • 更新 : 2014-02-09

本記事は広告およびアフィリエイトプログラムによる収益を得ています

追記:2014/02/09
WordPressをSQLiteで使う方法 【SQLite Integration、動作したプラグイン情報】
Alien Pastures » New SQLite driver for the blog

SQLite Integrationというプラグインが登場しています。日本人の方が製作されてるようで、かつ今のところメンテナンスをされているので、こっちのほうが良いかも?とは思います。


追記:2014/02/09
WordPress › Support »
PDO plugin: Fixing errors in the sqlite driver

pdo-for-wordpressの修正方法に関しては、この辺りも参考になるかも

Alien Pastures » Blog updated to 3.4, sqlite database fixed
wp_commentmeta というテーブルを上記記事にしたがって作成すると、プラグインの「Akismet」とかも使えるようになるらしい


追記:
・2012/06/15 WordPress3.4でも動作しています。
・2013/01/12 WordPress3.5でも動作しています。
・2013/09/01 WordPress3.6でも動作しています。

この記事では、サーバーは、ロリポップ!を使用しています。
さくらのレンタルサーバ ライトでも、同様の方法で動作するようです

参考記事:
さくらのレンタルサーバ ライトで WordPress 3.5.1 を動かす(SQLite) « のむのむ通信
wordpressをさくらインターネットに導入してみました。 | 日々コツ

動作環境など

・wordpress-3.3.1-jaとpdo-for-wordpress(2.7.0)
・wordpress-3.4.1-jaとpdo-for-wordpress(2.7.0) 追記:2012/07
・wordpress-3.5.1-jaとpdo-for-wordpress(2.7.0) 追記:2013/02/17

の組み合わせで確認しました。

WordPress3.3.1で実用レベルで問題なくSQLiteで動作してます。記事も400件程度インポートしてみましたが問題なさそうです。削除も修正も問題なさそうです。

なにも対策しない場合は、投稿時以下のようなワーニングが出ます。しかしながらちゃんと投稿されているので気にしなければ?問題ないでしょう。
Warning: implode() [function.implode]: Invalid arguments passed in /home/users/xxxxx/wp-includes/taxonomy.php on line 2879

Warning: Cannot modify header information - headers already sent by (output started at /home/users/xxxxx/wp-includes/taxonomy.php:2879) in /home/users/xxxxx/wp-includes/pluggable.php on line 866
エラーが出ない環境もあると思いますが、その場合、投稿ボタンを押すと投稿中というままになるようです。この場合も、ちゃんと投稿されています。

下記の対策を行うと、その問題も解消はされます。


インストールの仕方

WordPress3.3をいきなりインストールすることはできないようです。実際やってみると、「利用できないデータベーステーブルがあります。データベースの復元が必要かもしれません。」というエラーになってここからいろいろやってみてもうまく行きません。

そこで、wordpress-2.9.2-jaとpdo-for-wordpress(2.7.0)をいったんインストールしてここから、3.3.1に自動アップグレードを行うとうまくいきます。

1.wordpress-2.9.2-jaとpdo-for-wordpress(2.7.0)のインストール
WordPressをSQLiteで動作させる方法(pdo-for-wordpress,xrea)」を参考にしてください。

2.wordpress-3.3.1-jaに自動アップグレード
ダッシュボードから以下のようにしてアップグレードすればOKです。

動作したプラグイン

・WPtouch バージョン 1.9.39
・Ktai Style バージョン 2.0.5
・Flickr Manager バージョン 2.3
・WP Lightbox 2 バージョン 2.0
・WP Google Analytics
・Google Analytics Popular Posts バージョン 1.1.8
・Delete-Revision バージョン 1.3.1
・Revision Control バージョン 2.1
・Feed JSON バージョン 1.0.2
・FeedBurner FeedSmith Extend バージョン 1.0.0
・Ultimate Noindex Nofollow Tool バージョン 1.1.2
・brBrbr バージョン 2.0
・PS Disable Auto Formatting バージョン 1.0.8
・SEO Slugs バージョン 1.0
・Google XML Sitemaps バージョン 3.2.6 -ソース修正要
・cbnet Ping Optimizer バージョン 2.3.3 -事前にテーブル作成要
・Disable wptexturize  バージョン 1.0 
・Quick Adsense バージョン 1.9 
・WP-PageNavi バージョン 2.8.2 
・Wp Pagenavi Style バージョン 1.3
・No Self Pings バージョン 0.2
・WP Social Bookmarking Light バージョン 1.7.2
・PS Auto Sitemap バージョン 1.1.6
・WP Widget Cache バージョン 0.25.5
・WP No Category Base - WPML compatible 1.1.0
・WP Super Cache バージョン 1.3.2
・WP PHP widget バージョン 1.0.2
・Quick Cache バージョン 111203

以下動作しなかったプラグイン
・Wordpress Popular Posts
・WP-PostViews
・Broken Link Checker
・Better Delete Revision
・Ridirection
・DB Cache Reloaded Fix
※順次追加

意外と動作するプラグインは多いかもしれない


補足

PDOEngine.phpの中の以下の記述で実行時間のタイムアウトが30秒に設定されています。
set_time_limit(30);

もう少しタイムアウト値を上げないと以下のようなエラーが出ることがあります。
Fatal error: Maximum execution time of 30 seconds exceeded in
30から適当な値に書き換えてください。私は面倒なので120(2分)に設定しています。


不具合の解消方法(対策方法)

・カテゴリーWidgetが「カテゴリーなし」
・投稿で更新を押下するとエラーになる、または応答が戻ってこない

/wp-content/pdo/db.php
// function escape($string) {
//  return addslashes($string);
// }
// 修正 2012/03/28
 function escape($string) {
         return parent::escape($string);
 }
//から始まるものはコメントという意味です。前のコードをコメント化して修正したコードを上記のように追加してください。
/wp-content/pdo/PDOEngine.php
private function prepareQuery(){
        $this->queries[] = "Prepare:t". $this->preparedQuery;
        do {
            $this->statement = $this->pdo->prepare($this->preparedQuery);
            if ($this->statement === false){
                $reasons = $this->pdo->errorinfo();
                $reason = $reasons[1];
//              $this->pdo->exec('vacuum');
            } else {
                $reason = 0;
            }
        } while ($reason == 17);
$this->pdo->exec('vacuum');をコメント化する。
こちらの修正はおすすめしないけど、これで投稿時に更新から応答が戻ってこないのは回避はできる。

プラグイン導入後、管理画面に入れなくなった場合

W3 Total Cache導入で、画面が真っ白か、500 Internal Server Errorになった場合

[WordPress]W3 Total Cache で 500 Internal Server Error - Cherry Pie Weblog

1. .htaccessファイルをもとの状態に戻すか、「W3 Total Cache」が書き換えた部分を削除
2. FTPなどで、wp-content/plugins以下にある「W3 Total Cacheプラグイン」のフォルダを削除

こうすれば、復旧できます。

「該当プラグインをFTPなどを使って削除する」で、たいていは管理画面に入れるようになります。
キャッシュ系のプラグインはそれでは無理なことが多く、上記のような感じで対応すればOKです。

スポンサーリンク