【CakePHP2】SimplePieを使用する
ComposerでCakePHP2とSimplePieをインストールします。使用するレンタルサーバーはエックスサーバーです。Composerを使用するので、PHPは5.3.2以上のバージョンが必要です。Composerでのインストールは以前に書いたので、それに追加するカタチで書きます。
- PHP
- 7.0
- CakePHP
- 2.10.1
composer.json 作成
SimplePieはPackagistで検索したところ、1.4.3が見つかったのでそちらを使用します。DebugKitも同時にインストールするので追加。完成したcomposer.jsonが下記です。
{
"name": "my-app",
"require": {
"cakephp/cakephp": "2.10.*",
"simplepie/simplepie": "1.4.3"
},
"require-dev": {
"cakephp/debug_kit": "~2"
},
"extra": {
"installer-paths": {
"src/Plugin/{$name}/": ["type:cakephp-plugin"]
}
}
}
インストール、初期設定は【Composer, XAMPP】CakePHP2とDebugKitをインストールするで書きました。
SimplePie Feedを取得する
実際にCakePHPでSimplePieで使ってみます。
public function rss()
{
$feed = new SimplePie();
$feed->enable_cache(false);
$feed->set_feed_url(''); // 取得したいサイトアドレス
$feed->init();
$data = [];
foreach ($feed->get_items() as $tmp) {
$data[] = array(
'title' => $tmp->get_title(),
'url' => $tmp->get_link(),
'site' => $tmp->get_feed()->get_title(),
'created' => $tmp->get_date('Y-m-d'),
);
}
$this->Model->saveMany($data);
}
簡易ですが、これで更新情報を取得できます。SimplePieはキャッシュや複数サイトの取得などの細かい設定も可能です。
SSL エラーが発生
XAMPPからSSL化されたサイトのfeedを取得しようとした場合に、cURL error 60: SSL certificate problem: unable to get local issuer certificateというエラーが発生します。解決方法はphp.iniのcurl.canotice
に、XAMPP内にあるSSL証明書を指定します。
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.canotice = C:\xampp\apache\bin\curl-ca-bundle.crt
編集後、Apacheの再起動でエラーが解消されます。