Это - конфигурация сайта на основе официального документа Symfony2
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;
}
Сначала, я добирался No input file specified.
ошибка, однако я читал на nginx Wiki, в которой для этой конфигурации я не нуждаюсь cgi.fix_pathinfo=0
(на самом деле они говорят, что Symfony2 нужен он, чтобы быть cgi.fix_pathinfo=1
).
Таким образом, я возвратил его для установки по умолчанию (1
) и теперь я добираюсь File not found.
.
Я видел другие вопросы, где они предлагают использовать location ~ \.php$ {
, однако они не были предназначены для приложения Symfony2.
Я хотел бы придерживаться официальной конфигурации Symfony2, если это возможно.
Почему это происходит, и каково решение?
РЕДАКТИРОВАНИЕ 1:
Я изменился cgi.fix_pathinfo
назад к 0
и измененный конфигурация на это:
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;
}
Затем перезапущенный nginx и php5-fpm, как предложено на IRC, однако, получая известное Input file not specified
ошибка.
РЕДАКТИРОВАНИЕ 2: это - error.log
25.06.2014 22:11:45 [ошибка] 11922#0: *3 FastCGI, отправленные в stderr: "Не удалось открыть основной сценарий:/media/Storage/project/web/app_dev.php (Никакой такой файл или каталог)" при чтении заголовка ответа из восходящего потока, клиента: 127.0.0.1, сервер: project.local, запрос: "ПОЛУЧИТЕ/app_dev.php HTTP/1.1", в восходящем направлении: "fastcgi://unix:/var/run/php5-fpm.sock": хост: "project.local"
РЕДАКТИРОВАНИЕ 3: это - access.log
127.0.0.1 - [25/Jun/2014:22:11:45 +0200] "ПОЛУЧАЮТ/app_dev.php HTTP/1.1" 404 56 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, как Геккон) Ubuntu Хром/34.0.1847.116 Chrome/34.0.1847.116 Safari/537.36"
symfony2 файлы журнала пусты. Я не думаю, что симфония когда-либо выполнялась.
РЕДАКТИРОВАНИЕ 4: я изменил свой confing после этого ТАК anwser к:
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;
}
}
И теперь я добираюсь Access denied.
ошибка. Yay, что-то изменилось :). Шиканье, еще не работая :(.
РЕДАКТИРОВАНИЕ 5: я имею chown loostro:www-data /media/Storage/project -R
и затем chmod g+s /media/Storage/project -R
, все еще получение Access denied
РЕДАКТИРОВАНИЕ 6: /var/run/php5-fpm.sock
полномочия:
srw-rw---- 1 www-data www-data 0 cze 26 11:03 php5-fpm.sock
/etc/php5/fpm/pool.d/www.conf
файл является значением по умолчанию (для дистрибутива Ubuntu 14.04), кроме этих изменений, которые я не прокомментировал после учебного руководства:
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
SUMMARY: Моя проблема была в неправильных разрешениях на файлы. Официальная настройка symfony2 для nginx в порядке. Я переместил свои файлы на диск NTFS Storage, и кажется, что во время перемещения файлов разрешения были изменены.
chown loostro: www-data -R /media/Storage/project
- измените владельца на loostro и group на www-data (loostro - мой пользователь, под которым я разрабатываю приложение, php5-fpm работает как www-data), recursivelychmod 755 -R /media/Storage/project
- измените права доступа к файлам для проекта на rwx (владелец) rx (группа, другое), recursivelycd /media/Storage/project
введите в каталог моего проектаchmod 775 -R app/cache app/logs web/uploads private/uploads
- измените права доступа к файлам для загружаемых каталогов rwx (owner,group) и rx (other), recursivelychmod g+s -R /media/Storage/project
- сохраняйте права пользователя и группы и права доступа к файлам для вновь создаваемых файлов в каталогах, recursively