サポート

拍手送信プラグインでエラーが出る

匿名 (2017/09/07 10:59)

設置URL : http://freo.jp/support/

サイト自体が二次創作なども取り扱っているサイトに匿名で失礼致します。

題名のとおりなのですが、
諸事情でfreoの再アップロード及び設定等を行っており、本体自体は無事設定できたのですが
拍手送信プラグインをアップロード、セットアップを行いページにアクセスした際に

Fatal error: Call to a member function execute() on a non-object in /home/users/1/○○/web/○○/libs/freo/plugins/page.clap.php on line 174

とのエラーが表示されます。一度プラグインの削除をして再セットアップを行ってもエラーが表示されたため、プログラムには無知の当方としては現状お手上げ状態となっております。他のプラグインでもエラーが起きる可能性もあるため、このようなエラーが出た際の対処法をご存じの方は何卒知恵をお貸し下さい。
データベースはSQLite3、設置サーバーはロリポップ(エコノミープラン)となっております、よろしくお願いいたします

南方かおり (2017/09/08 10:42)

URL : https://holydragoon.jp/

匿名様

おはようございます。
拍手送信プラグインの再セットアップでエラーが出るとのことなので、ご提示されているエラー文のエラー発生行数である、174行目付近のスクリプトを確認してみました。

エラーが出る174行目付近のスクリプト(168行目から177行目)を抜き出してみると、

//拍手年月日取得
if (FREO_DATABASE_TYPE == 'mysql') {
$stmt = $freo->pdo->prepare('SELECT DATE_FORMAT(created, \'%Y-%m-%d\') AS day, COUNT(*) AS count FROM ' . FREO_DATABASE_PREFIX . 'plugin_claps GROUP BY day ORDER BY day DESC');
} else {
$stmt = $freo->pdo->prepare('SELECT STRFTIME(\'%Y-%m-%d\', created) AS day, COUNT(*) AS count FROM ' . FREO_DATABASE_PREFIX . 'plugin_claps GROUP BY day ORDER BY day DESC');
}
$flag = $stmt->execute();
if (!$flag) {
freo_error($stmt->errorInfo());
}

こうなっています。
そこで実行されているデータベースのSQL文を確認してみたのですが、エラーの出ている$flag = $stmt->execute();の一文の前に、$stmt = $freo->pdo->prepare ~ という書き方をするならば併せて記述するはずの、$stmt->bindValue(~);という文が続いておらず、それが原因で174行目でエラーが出ているのではないかと推測されました。

そこで、page.clap.phpの上述した168行目から177行目までの記述を、以下の記述にコピー&ペーストで書き換えてサーバーにアップデートしてみてください。

//拍手年月日取得
if (FREO_DATABASE_TYPE == 'mysql') {
$stmt = $freo->pdo->query('SELECT DATE_FORMAT(created, \'%Y-%m-%d\') AS day, COUNT(*) AS count FROM ' . FREO_DATABASE_PREFIX . 'plugin_claps GROUP BY day ORDER BY day DESC');
} else {
$stmt = $freo->pdo->query('SELECT STRFTIME(\'%Y-%m-%d\', created) AS day, COUNT(*) AS count FROM ' . FREO_DATABASE_PREFIX . 'plugin_claps GROUP BY day ORDER BY day DESC');
}
if (!$stmt) {
freo_error($freo->pdo->errorInfo());
}

これでエラーが消えてくれればいいのですが。
当方のローカル環境などで同じような再セットアップを試していませんので、同様の現象が再現できていなくて大変申し訳ないです。

匿名 (2017/09/08 22:58)

URL : http://freo.jp/support/

南方様

ご回答ありがとうございます。
アドバイスのとおりに修正したものをアップロードして動作を確認したところ、

拍手管理画面にアクセスした際、Fatal errorと表示されなくはなったが、
「エラーが発生しました no such table: freo_plugin_claps」とのエラーメッセージが出る

拍手ページにアクセスした際、
Fatal error: Call to a member function bindValue() on a non-object in /home/users/1/○○/web/○○/libs/freo/plugins/page.clap.php on line 803
とのエラーメッセージが出る

の二点のエラーを確認いたしました。
前者に関しては、freo自体のエラーメッセージだったためプラグイン用ファイル自体に問題があることは把握できたのですが、後者のエラーメッセージ通り803行等の修正が必要になるというところでしょうか?

お手数おかけいたしますが、引き続きアドバイスなどいただければ幸いです。

南方かおり (2017/09/09 10:29)

URL : https://holydragoon.jp/

匿名様

新たなエラーが出ましたか・・・。
ということは、スクリプト側の問題ではなさそうですね。
でしたら、スクリプトは元に戻していただいて大丈夫です。

今回ご提示していただいたエラーの内容ですが、『no such table: freo_plugin_claps』ですので、読んで字のごとく拍手送信プラグインのデータベーステーブルであるfreo_plugin_clapsがお使いのデータベース内にできていないというエラーです。
一番初めに出たエラーも、今回の803行目のエラーもfreo_plugin_clapsが、データベース内に無いために出ているものと思われます。

ですので、拍手送信プラグインのconfig.clap.phpとpage.clap.phpファイルを一度サーバーから削除して、プラグインの導入時にやるべき
管理画面にログイン>config.clap.phpとpage.clap.phpをサーバーにアップロード>サイトのurl/index.php/clap/setupにアクセスして拍手送信プラグインのセットアップ
を一度お試しください。

匿名 (2017/09/09 19:22)

南方様

ご助言ありがとうございます。
一度サーバーより削除して再度プラグイン導入のやり直しとセットアップを行ったところ、

Fatal error: Call to a member function execute() on a non-object in /home/users/1/○○/web/○○/libs/freo/plugins/page.clap.php on line 174

とのエラーが表示されました。
他個人的に調べた範囲では、何らかの原因でデータベースが作成されない状態になっている可能性があることは把握できました。

とはいえ原因までは把握できなかったため、現状代用できる他cgiやphpを併用してみるという形で様子を見ることも検討いたします。

無事解決となっていないのが申し訳ないのですが、一旦この質問は示させていただきます。相談に乗っていただきありがとうございました、助かりました。

返信

  • この記事に返信します。
  • 返信の際は、設置URL以外の項目は入力必須です。
投稿フォーム
名前
設置URL
本文(本文の装飾について
編集キー(投稿した記事を編集する際に使用します。)
投稿キー(スパム対策に、投稿キー を半角で入力してください。)