pagetaka

写真、PC、ネット、岡山、旅の話題をお届けします

PHP:Fatal error: Class 'Facebook' not found in エラー解決…簡単かも

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は表示されない、というだけだけど

developers.facebook.com

  1. facebookで開発登録:fbアカウントや開発者登録、そして作る予定のPHPの「App ID」等は取得しといてくださいね。上のスクリプト実行に今回必要なのは「App ID」のみでした…とりあえず。
  2. facebookSDKをDLしPHPが動くWEBサーバ内に、「facebook-php-sdk-v4-5.0.0」にある「src」フォルダのみを配置(コピペ)するです。
  3. 上のスクリプトをコピーし、テキストエディタに貼り付け、app_id=>右にある{自分で自分のを入れてね}({}も含む、''の内側)に、先に取得した(はずの)「App ID」を貼り付けるです。
  4. スクリプトUTF-8(BOMなし)で例えばindex.phpなどという名前を付け、「src」フォルダに置く
  5. さあ、恐るおそる、呼び出してみよう。例えば http://127.0.0.1/testfb/src/ というURLになるのかと
  6. 「OK」が表示されたらとりあえず「Fatal error」は発生しておらず、FBにはそっぽを向かれてない(のかな…)というコトニ。
App ID はこんな感じに表示されてます

f:id:PageTAKA:20160227103045j:plain

備忘録

分かっている人には、「何をいまさら!」「何がしたいの?」というような「!?」状態なのですが、爺には備忘録としてタイセツであります。twitterでも似たようなことがあって、呼び出す側のPHPファイルの置き場所がキーだったのでありました。今回も似たようなことでした。

「composer」を使う方法もあるようです…爺はウマクイカズ…シクシク。

今回は、とりあえずのエラーが出なくなったというだけで、なにかをFBから持ってきた、読み込んだという類のものではありません。デモネ、ネット徘徊してましたら、爺と同様の悩みをネット上にUPしている人は結構いたです。

そうそうrequire_once __DIR__ . '/Facebook/autoload.php';も結構大切です…はい。