ThinkCMFを構築してNginxレポート500エラーにアクセスし、ログに現れたopen_basedirの問題

1292 ワード

Open_basedirの説明:
open_basedirは、PHPで開くことができるファイルを、ファイル自体を含む指定したディレクトリツリーに制限します.プログラムがfopen()やfile_などを使用する場合get_contents()がファイルを開くと、そのファイルの場所がチェックされます.ファイルが指定したディレクトリツリーの外にある場合、プログラムは開くことを拒否します.このコマンドは、セキュリティモードのオン/オフの影響を受けません.
事の原因:ThinkCMFプロジェクトはアリクラウドサーバーCopyから下りてきて、それからテンセントクラウドサーバーにアップロードして、2台のサーバーのインストール環境はすべてLnmpの1ボタンのインストールです.アリクラウドサーバー上のアクセスは全く問題なく、テンセントクラウドに移行した後、プロジェクトのアクセスを構築する時、ログ新聞Open_basedirエラー.
2018/08/09 10:28:58 [error] 10209#0: *1 FastCGI sent in stderr: "PHP message: PHP Warning:  require(): open_basedir restriction in effect. File(/home/wwwroot/ThinkCMF/simplewind/thinkphp/base.php) is not within the allowed path(s): (/home/wwwroot/ThinkCMF/public/:/proc/) in /home/wwwroot/ThinkCMF/public/index.php on line 38

経緯:しばらく調べてみるとfastcgiを修正する必要があることに気づいた.confの下のopen_basedirのパス.(位置:/usr/local/nginx/conf/)
デフォルトは「open_basedir=$document_root/:/tmp/:/proc/」です.
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/:/tmp/:/proc/";

その後、私のプロジェクトサイトディレクトリは/home/wwwroot/です.
fastcgi_param PHP_ADMIN_VALUE "open_basedir=$document_root/../:/tmp/:/proc/";

サービスnginx restartの再起動
以上の変更により、Nginxを再起動した後、サイトへのアクセスが正常になりました.もちろんこれはただの方法で、あなたに役に立つことを望んでいます.