背景情報: 私は自分のサーバー (localhost) で自己ホスト型の Facebook アプリを開発しており、すべてが機能しています。最近、ファイルを共有ホスティング オンライン サーバー (hostgator) にアップロードしたところ、奇妙なバグが発生しました。
私の require_once() 関数は、hostgator サーバーの相対パスを無視しているようです。たとえば、index.php には、require_once('fb/login.php') があります。これにより、example.com/login.php のファイルが見つからないというエラーがスローされます。require() がパスの fb 部分を無視するのはなぜですか? これは、私のプライベート localhost サーバーでは問題なく動作することを覚えておいてください。私はいくつかのグーグルを行い、php.ini に移動して include_path=".:" を有効にすることで問題の半分を解決しました。これで最初のエラーはなくなりましたが、login.php にも require_once('fb/sdk/Facebook.php') があり、そのファイルを見つけることができません。ネストされたrequireで面倒になることは理解していますが、これは私のローカルホストサーバーで機能します。どちらのサーバーも PHP5 であり、php.ini ファイルが類似していることを確認しました。デフォルトでは、localhost の php.ini には include_path がコメントされています。オンラインの php.ini ファイルをローカルホストのファイルに置き換えることさえしました。それでも、何もありません。絶対パスを使用してみましたが、機能しますが、コード全体に多くのインクルードとリクエストがあり、すべてのパスにコードを渡したくありません。洞察はありますか?これは本当に腹立たしい問題であり、簡単な解決策があることを願っています。
ありがとうございました!
さて、私はたくさんの調査を行い、最終的に $_SERVER['DOCUMENT_ROOT'].'fb/login.php' をすべての必須およびインクルードのパスとして使用しました。私の問題はすべて解決しました、神に感謝します