Ugh, пытающийся получить NGINX/php-fpm, чтобы играть красиво с SF 1.4 в течение нескольких дней, и не может показаться, что он прибил правильную конфигурацию. Я последовал за nginx symfony guide, а как это SO post, но ни помогло, и я подозреваю, что это может быть потому, что они были настроены против старых версий NGINX (я работаю с 1.6.2)NGINX + php-fpm + Symfony 1.4 = :(
Вот мой конфиг:.
server {
listen 51000;
server_name example.mpurcell.dev.example.com;
access_log /tmp/access.log;
error_log /tmp/error.log notice;
root /home/mpurcell/projects/j1n/app/example/current/code/web/;
index index.php;
location ~ ^/(app|app_dev)(/|$) {
rewrite ^(.*)$ $1.php last;
}
location ~ ^/(app|app_dev).php(/|$) {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
fastcgi_param SERVICE_ENV 'dev';
fastcgi_param HTTPS off;
# http://wiki.nginx.org/Symfony
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass unix:/var/run/php-fpm.sock;
}
}
И различные ответы:
$ -> curl -v 10.0.0.7:51000
# Expected
< HTTP/1.1 301 Moved Permanently
< Server: nginx/1.6.2
< Date: Wed, 01 Oct 2014 23:34:10 GMT
< Content-Type: text/html
< Transfer-Encoding: chunked
< Connection: keep-alive
< Location: /app
$ -> curl -v 10.0.0.7:51000/app.php
# Expected
< HTTP/1.1 200 OK
< Server: nginx/1.6.2
< Date: Wed, 01 Oct 2014 23:37:48 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Cache-Control: private
$ -> curl -v 10.0.0.7:51000/app
# Not expected, the script executes but SF throws a 404 with the following error
# Empty module and/or action after parsing the URL "/app" (/).
< HTTP/1.1 404 Not Found
< Server: nginx/1.6.2
< Date: Wed, 01 Oct 2014 23:39:09 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Cache-Control: private
И он уверен, выглядит как правило переписывания из ВХост конфигурации работает:
2014/10/01 23:40:30 [notice] 9668#0: *13 "^(.*)$" matches "/app", client: 10.0.0.3, server: example.mpurcell.dev.example.com, request: "GET /app HTTP/1.1", host: "dev-a-2:51000"
2014/10/01 23:40:30 [notice] 9668#0: *13 rewritten data: "/app.php", args: "", client: 10.0.0.3, server: example.mpurcell.dev.example.com, request: "GET /app HTTP/1.1", host: "dev-a-2:51000"
И ради Комплектность, то cgi.fix_pathinfo
по умолчанию (= 1), и я не хочу, чтобы установить это значение 0.
Кроме того, следует отметить, что для контроллера приложения relative_url_root
установлена пустая строка, так как она находится в корневом каталоге.
Stack:
nginx 1.6.2
php-fpm 5.4.33
php 5.4.33
Проверьте, что ваша конфигурация предназначена для правильной версии фреймворка: если вы используете sf 1.4, вы публикуете конфигурацию для sf 2.x (app * .php является типичным для sf2.x и frontend * .php backendé.php является типичным для sf1.4). надеюсь эта помощь. – Matteo
Ссылки, которые я разместил, были в SF2, но в той же ссылке была ссылка на конфигурацию 1.4 NGINX, которую я попытался использовать, но не работал. Для моего проекта SF1 я использую контроллеры app, admin, api вместо lame fe и контроллеры. –