私はちょっとした実験をしています。よろしければ仮説です。主なアイデアは単純です: 3 つの Docker コンテナー、1 つは index.php を含む単純なデータ コンテナーであり、/app/web/
単純に出力されますphpinfo();
。これは正常に機能します。
正常に動作しているnginxコンテナと、別のPHP-FPMコンテナがあります。どちらも公式画像より。
標準のセットアップですべてが正常に機能し、セキュリティ対策がデータコンテナをphp-fpmにのみバインドしたとしても、nginxはファイル自体にアクセスすることさえできませんでした. したがって、データ コンテナは の php-fpm コンテナにマウントされ、/app
すべてがうまくいっています。
これはすべて問題ありませんでした。それから、いくつかの変数をいじり始めました。
実際、nginx が変数を php-fpm に渡すだけの場合、nginx fastcgi セットアップでいくつかのパラメーターを削除できる可能性があることに気付きました。 ?
chroot
に設定するとうまくいき/app
、に追加chdir
しました/web
が、nginxから削除するとすぐにPATH_TRANSLATED
機能しなくなります。私は得るFile not found.
か、No input file specified.
nginx コンテナの nginx.conf の関連部分は次のとおりです。nginx.conf にroot
は指定されていません。
location / {
index index.php;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
fastcgi_index index.php;
fastcgi_param HTTPS $https;
fastcgi_param HTTP_PROXY '';
fastcgi_intercept_errors on;
fastcgi_pass php-fpm:9000;
break;
}
www.conf
プールの関連部分:
chroot = /app
; Chdir to this directory at the start.
; Note: relative path can be used.
; Default Value: current directory or / when chroot
chdir = /web
php_admin_value[doc_root] = /app/web
何か案は?