アスカチェッカー民ブログ新着情報の不具合解消
- アスカチェッカー民ブログ新着情報
- SimplePie: Downloads Version 1.3.1 1.3 MB zip file. Released on 30 October 2012.
- simplepie/simplepie · GitHub
気付き
2015年1月11日17時の自動更新で,17時以前に投稿した私の記事「Debian 7 Wheezy (stable),安定版との付き合い - 01647」が反映されていなかった.手動更新し,エラーメッセージを受け取った.
Fatal error: Call to a member function get_uri() on a non-object in /home/paul/public_html/lib/simplepie_1.3.mini.php on line 8777
エラー内容と現在のSimplePie
Call to a member function get_uri() on a non-object in simplepie/library/SimplePie/Misc.php on line 83 · Issue #214 · simplepie/simplepie · GitHubによると,この問題は2012年7月12日に発見されていた.そして解決コードは2014年9月8日にマージされていた.
「新着情報」は2012年10月30日リリースの1.3.1を使用していた.不具合解決には,最新のSimplePie使用が適当だろうと思った.GitHubには5ブランチがある.
1.4開発版使用で解決した
READMEによると,使用には2形態あるようだ.分割ファイル形態はautoloader.phpをincludeする.1.3以前にあった単一ファイル形態は SimplePie.compiled.php を使用する.私は後者を選んだ.
別のエラー発生とその解決
require_onceの対象を SimplePie.compiled.php に変えただけでは不足だった
Fatal error: Class 'SimplePie_Cache_DB' not found in /home/paul/public_html/lib/SimplePie.compiled.php on line 9513
GitHubではバグとして登録されていた.PHP Fatal error: Class 'SimplePie_Cache_DB' not found · Issue #231 · simplepie/simplepie · GitHub.問題のクラスを以下に示す.
<?php /** * Caches data to a MySQL database * * Registered for URLs with the "mysql" protocol * * For example, `mysql://root:password@localhost:3306/mydb?prefix=sp_` will * connect to the `mydb` database on `localhost` on port 3306, with the user * `root` and the password `password`. All tables will be prefixed with `sp_` * * @package SimplePie * @subpackage Caching */ class SimplePie_Cache_MySQL extends SimplePie_Cache_DB
SimplePie_Cache_DBは10111行で定義されていた.
<?php /** * Base class for database-based caches * * @package SimplePie * @subpackage Caching */ abstract class SimplePie_Cache_DB implements SimplePie_Cache_Base
このエラーは,継承するクラスが未定義だったために発生したのだろうと思った.SimplePie_Cache_DBの定義を,SimplePie_Cache_MySQLの定義直前に移すと解決した.抜本的解決には build/compile.php を修正,なのだろうと思う.