facebook-php-sdk-v4-5.0.0 でSDK使おうとしたけれど、Fatal error: Class 'Facebook' 連発
fbに投稿された公開情報をPHPをつかいSDK経由でJSON形式のを取得しようと何日かもがいておりました。まだ、実際にはもがいておりますが…。
グルグル巡りになったのが「Fatal error: Class 'Facebook' not found in」というエラーです。「'Facebook'」箇所は、途中でさまざまなパス(ディレクトリ)で試してますけど、まあ、それがPHPスクリプトからすれば見つからないのだとのご託宣なわけです。
ネット徘徊結構したです。
ここが役にたった
まずは、ここを見て分かったという、爺的にイチバンありがたかったページが下のリンクです。
smkn.xsrv.jp
簡単エラー解決、などというほどでもないですが、呼び出し側ファイルの置き場所がひとつのポイント
<?php //一番簡単な動作確認|srcフォルダに適宜な名前で保存、URL呼び出し require_once __DIR__ . '/Facebook/autoload.php'; $fb = new Facebook\Facebook([ 'app_id' => '{自分で自分のを入れてね}', // 'app_secret' => '{とりあえず不要}', // 'default_graph_version' => 'v2.4', // 'access_token' => '{とりあえず不要}', ]); echo 'OK<br />'; ?>
上のスクリプトで動作確認して成功しました。イヤ「成功」というよりは、正確には「Fatal error: Class 'Facebook' not found in ~」は出現しなくなった、というのが事実です…スミマセン、あまりにも簡単なことで躓いてたもので…シクシク。
手順など:結果的にFatal errorは表示されない、というだけだけど
- facebookで開発登録:fbアカウントや開発者登録、そして作る予定のPHPの「App ID」等は取得しといてくださいね。上のスクリプト実行に今回必要なのは「App ID」のみでした…とりあえず。
- facebookSDKをDLしPHPが動くWEBサーバ内に、「facebook-php-sdk-v4-5.0.0」にある「src」フォルダのみを配置(コピペ)するです。
- 上のスクリプトをコピーし、テキストエディタに貼り付け、app_id=>右にある{自分で自分のを入れてね}({}も含む、''の内側)に、先に取得した(はずの)「App ID」を貼り付けるです。
- スクリプトをUTF-8(BOMなし)で例えばindex.phpなどという名前を付け、「src」フォルダに置く
- さあ、恐るおそる、呼び出してみよう。例えば http://127.0.0.1/testfb/src/ というURLになるのかと
- 「OK」が表示されたらとりあえず「Fatal error」は発生しておらず、FBにはそっぽを向かれてない(のかな…)というコトニ。
App ID はこんな感じに表示されてます
備忘録
分かっている人には、「何をいまさら!」「何がしたいの?」というような「!?」状態なのですが、爺には備忘録としてタイセツであります。twitterでも似たようなことがあって、呼び出す側のPHPファイルの置き場所がキーだったのでありました。今回も似たようなことでした。
「composer」を使う方法もあるようです…爺はウマクイカズ…シクシク。
今回は、とりあえずのエラーが出なくなったというだけで、なにかをFBから持ってきた、読み込んだという類のものではありません。デモネ、ネット徘徊してましたら、爺と同様の悩みをネット上にUPしている人は結構いたです。
そうそうrequire_once __DIR__ . '/Facebook/autoload.php';も結構大切です…はい。