質問: はじめまして! 現在、以下のFacebook公式サイトを参考にしながらFacebook認証の開発を進めている者です。 ``` > Fatal error: Class 'Facebook\FacebookSession' not found in > > /ドメイン名/index.php on line 15 > > > と表示されてしまいます。 ちなみに、SDKはComposerではなくGithubからダウンロードし、ルートディレクトリに配置したので、 公式サイトにある ``` define('FACEBOOK_SDK_V4_SRC_DIR', '/path/to/fb-php-sdk-v4/src/Facebook/'); require __DIR__ . '/path/to/facebook-php-sdk-v4/autoload.php'; ``` の/path/to/は意図的に削除しました。 このような場合、どのような処置をとればよいでしょうか? よろしくお願い申し上げます。
回答: autoload.php には次のように書かれています。 ``` // base directory for the namespace prefix $base_dir = defined('FACEBOOK_SDK_V4_SRC_DIR') ? FACEBOOK_SDK_V4_SRC_DIR : __DIR__ . '/src/Facebook/'; ... // replace the namespace prefix with the base directory, replace namespace // separators with directory separators in the relative class name, append // with .php $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php'; // if the file exists, require it if (file_exists($file)) { require $file; } ``` どうやら、 `FACEBOOK_SDK_V4_SRC_DIR` はそのまま require できるパスを指定する必要があるようです。 具体的な対処としては次のどちらかになるかと思います。 * `FACEBOOK_SDK_V4_SRC_DIR` にも `__DIR__` を付加する * いっそ defineを 省略する→ autoload.php の場所から見た `./src/Facebook/` が使われる ドキュメントでは require の方にだけ `__DIR__` が使われていて紛らわしいですね・・・。