This is the site config based on official Symfony2 doc
server {
listen 80;
server_name project.local;
root /media/Storage/project/web;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
location ~ ^/(app|app_dev|config)\.php(/|$) {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
}
server {
listen 443;
server_name project.local;
root /media/Storage/project/web;
ssl on;
ssl_certificate /etc/nginx/ssl/localhost.crt;
ssl_certificate_key /etc/nginx/ssl/localhost.key;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
location ~ ^/(app|app_dev|config)\.php(/|$) {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS on;
}
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
}
At first, I was getting No input file specified. error, however I've read on nginx wiki that for this config I don't need the cgi.fix_pathinfo=0 (actually, they say Symfony2 needs it to be cgi.fix_pathinfo=1).
So I've changed it back to default (1) and now I'm getting File not found..
I've seen other questions where they suggest to use location ~ \.php$ {, however they were not meant for Symfony2 app.
I'd like to stick with the Symfony2 official config if possible.
Why is this happening, and what is the solution?
EDIT 1:
I've changed the cgi.fix_pathinfo back to 0 and changed the config to this:
server {
listen 80;
server_name project.local;
root /media/Storage/project/web;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
location ~ "^(.+\.php)($|/)" {
fastcgi_split_path_info ^(.+\.php)(.*)$;
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/php5-fpm.sock;
include fastcgi_params;
}
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
}
server {
listen 443 ssl;
server_name project.local;
root /media/Storage/project/web;
ssl_certificate /etc/nginx/ssl/localhost.crt;
ssl_certificate_key /etc/nginx/ssl/localhost.key;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
location ~ "^(.+\.php)($|/)" {
fastcgi_split_path_info ^(.+\.php)(.*)$;
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/php5-fpm.sock;
include fastcgi_params;
}
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
}
Then restarted nginx and php5-fpm, as suggested on IRC, however, getting the famous Input file not specified error.
EDIT 2: this is the error.log
2014/06/25 22:11:45 [error] 11922#0: *3 FastCGI sent in stderr: "Unable to open primary script: /media/Storage/project/web/app_dev.php (No such file or directory)" while reading response header from upstream, client: 127.0.0.1, server: project.local, request: "GET /app_dev.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "project.local"
EDIT 3: this is access.log
127.0.0.1 - - [25/Jun/2014:22:11:45 +0200] "GET /app_dev.php HTTP/1.1" 404 56 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/34.0.1847.116 Chrome/34.0.1847.116 Safari/537.36"
The symfony2 log files are empty. I don't think symfony was ever executed.
EDIT 4: I've changed my confing following this SO anwser to:
server {
listen 80;
server_name project.local;
root /media/Storage/project/web;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
location / {
index app.php;
if (-f $request_filename) {
break;
}
rewrite ^(.*)$ /app.php last;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ (app|app_dev).php {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param HTTPS off;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
server {
listen 443 ssl;
server_name project.local;
root /media/Storage/project/web;
ssl_certificate /etc/nginx/ssl/localhost.crt;
ssl_certificate_key /etc/nginx/ssl/localhost.key;
error_log /var/log/nginx/ssl_error.log;
access_log /var/log/nginx/ssl_access.log;
location / {
index app.php;
if (-f $request_filename) {
break;
}
rewrite ^(.*)$ /app.php last;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ (app|app_dev).php {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
And now I'm getting Access denied. error. Yay, something changed :). Boo, not working yet :(.
EDIT 5: I've chown loostro:www-data /media/Storage/project -R and then chmod g+s /media/Storage/project -R, still getting Access denied
EDIT 6: The /var/run/php5-fpm.sock permissions are:
srw-rw---- 1 www-data www-data 0 cze 26 11:03 php5-fpm.sock
The /etc/php5/fpm/pool.d/www.conf file is the default (for Ubuntu 14.04 distro), except these changes I've uncommented following a tutorial:
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
listen.modeset to0666which i think was the default when i first set everything up. The dedault may have changed because they thought0660was more sensible, but Id be curious if making it0666would solve the issue. At least then you would know where the issue was. Also in my configuration, both owner and group match the owner and group of the files I'm serving. Of course I have mine set up to run as specific user accounts, not the systemwww-data. – prodigitalson Jun 26 '14 at 14:48fastcgi_buffer_size 16k;andfastcgi_buffers 4 16k;(to fix 502 Bad Gateway error) and improting the database, the app works flawlessly! Now I need to lower the priviledges and test. – loostro Jun 26 '14 at 17:39