これを見つけるのに何時間も費やした後 (sf2 doc では、cgi パラメーターがどのように必要とされ、解釈されるかについて説明されていないため、理解するには Request.php を調べる必要があります)、これを共有します。
これは、ディレクトリ {subdir} 内の sf2 で問題ないように見える構成です (また、{subdir}/web/* 以外のファイルへの Web アクセスは禁止されています)。
php-fpm(ソケット)で動作します。
もちろん、"{subdir}" を /path/from/docroot/to/symfony_root/ に置き換えます
開発環境は、「dev」を「{subdir}」に追加することで選択できます (URL の app_dev.php はこの conf では機能しなくなったため)
server {
# general directives
location ~ ^/{subdir}(/.*)$ {
try_files /{subdir}/web$1 @sf2;
}
location ~ ^/{subdir}dev(/.*)$ {
expires off;
try_files /{subdir}/web$1 @sf2dev;
}
location @sf2 {
expires off;
fastcgi_pass {your backend};
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/{subdir}/web/app.php;
fastcgi_param SCRIPT_NAME /{subdir}/app.php;
fastcgi_param REQUEST_URI /{subdir}$1;
}
location @sf2dev {
expires off;
fastcgi_pass {your backend};
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/{subdir}/web/app_dev.php;
fastcgi_param SCRIPT_NAME /{subdir}dev/app_dev.php;
fastcgi_param REQUEST_URI /{subdir}dev$1;
}
# other location directives
# if some others apps needs php, put your usual location to cactch php here
}
保証なしで与えられた、それが役立つことを願っています(そして、設定ミスはありません)...
もちろん、必要がない場合は、prod/dev conf を選択できます。また、代わりに var と 1 つの @sf2 ロケーションのみを使用できます。
set $sf2_root /{subdir};
location ~ ^/{subdir}(/.*)$ {
set $sf2_prefix /{subdir};
set $sf2_ctrl app.php;
try_files $sf2_root/web$1 @sf2;
}
location ~ ^/{subdir}dev(/.*)$ {
set $sf2_prefix /{subdir}dev;
set $sf2_ctrl app_dev.php;
expires off;
try_files $sf2_root/web$1 @sf2;
}
location @sf2 {
expires off;
fastcgi_pass {your backend};
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$sf2_root/web/$sf2_ctrl;
fastcgi_param SCRIPT_NAME $sf2_prefix/$sf2_ctrl;
fastcgi_param REQUEST_URI $sf2_prefix$1;
}