Конфигурация Symfony2 + Nginx на CentOS6 не работает
Я застрял здесь около 2 дней, чтобы выяснить, как сделать этот пробежку, надеюсь, кто-нибудь может указать, что я делаю неправильно.
Попытка запустить Symfony2 через Nginx-CentOS 6 с этим файлом конфигурации.
upstream phpfcgi {
server 127.0.0.1:9000;
# server unix:/var/run/php5-fpm.sock; #for PHP-FPM running on UNIX socket
}
server {
listen 80;
server_name symfony2;
root /var/www/project/web;
error_log /var/log/nginx/symfony2.error.log;
access_log /var/log/nginx/symfony2.access.log;
# strip app.php/ prefix if it is present
rewrite ^/app\.php/?(.*)$ /$1 permanent;
location / {
index app.php;
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}
# pass the PHP scripts to FastCGI server from upstream phpfcgi
location ~ ^/(app)\.php(/|$) {
include /etc/nginx/fastcgi.conf;
fastcgi_pass phpfcgi;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
}
Получается здесь, здесь и здесь. Я играл в Arround, внося небольшие изменения здесь и там, в основном на основе того, что говорят эти ссылки.
Мой файл php-fpm.d/www.conf выглядит так...
[www]
listen = 127.0.0.1:9000
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
user = nginx
group = nginx
pm = dynamic
pm.max_children = 50
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 10
pm.max_requests = 500
request_terminate_timeout = 45
request_slowlog_timeout = 45
slowlog = /var/log/php-fpm/www-slow.log
catch_workers_output = yes
security.limit_extensions = .php .php5
php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/nginx/tmp/session_php
От навигатора я получаю печально известное "Входной файл не указан". ошибка. Логи похожи...
[/var/log/nginx/symfony2.error.log]
2015/03/13 12:49:59 [error] 14298#0: *1 FastCGI sent in stderr: "Unable to open
primary script: /var/www/project/web/app.php (No such file or directory)" while
reading response header from upstream, client: 192.168.0.132, server: symfony2,
request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host:
"192.168.0.199"
[/var/log/nginx/symfony2.error.log]
[13-Mar-2015 12:49:59] WARNING: [pool www] child 14279 said into stderr:
"ERROR: Unable to open primary script: /var/www/project/web/app.php (No such
file or directory)"
Проект находится в /var/www/project и с этим набором разрешений. Изменено тем, что я прочитал здесь.
drwxr-sr-x. 5 nginx nginx 4096 mar 10 17:00 app
drwxr-sr-x. 2 nginx nginx 4096 mar 10 17:00 bin
-rwxr-sr-x. 1 nginx nginx 2717 mar 10 17:00 composer.json
-rwxr-sr-x. 1 nginx nginx 100442 mar 10 17:00 composer.lock
drwxr-sr-x. 2 nginx nginx 4096 mar 10 17:00 lib
-rwxr-sr-x. 1 nginx nginx 1065 mar 10 17:00 LICENSE
drwxr-sr-x. 3 nginx nginx 4096 mar 10 17:00 nbproject
-rwxr-sr-x. 1 nginx nginx 5750 mar 10 17:00 README.md
drwxr-sr-x. 3 nginx nginx 4096 mar 10 17:00 src
-rwxr-sr-x. 1 nginx nginx 1308 mar 10 17:00 UPGRADE-2.2.md
-rwxr-sr-x. 1 nginx nginx 1962 mar 10 17:00 UPGRADE-2.3.md
-rwxr-sr-x. 1 nginx nginx 356 mar 10 17:00 UPGRADE-2.4.md
-rwxr-sr-x. 1 nginx nginx 8499 mar 10 17:00 UPGRADE.md
drwxr-sr-x. 3 nginx nginx 4096 mar 10 17:00 web
Я уже много гуглю и тестирую разные вещи, но ничего из этого не работает:S. Если у кого-то есть идея, которую я хочу знать. Спасибо заранее.
Редактировать 1 Проверка app.php есть...
stat /var/www/project/web/app.php
File: `/var/www/project/web/app.php'
Size: 960 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 7997857 Links: 1
Access: (2755/-rwxr-sr-x) Uid: ( 496/ nginx) Gid: ( 493/ nginx)
Access: 2015-03-11 11:10:15.246469137 +0100
Modify: 2015-03-10 17:00:33.026535520 +0100
Change: 2015-03-13 11:55:52.755828687 +0100
1 ответ
Что на самом деле произошло, пока неизвестно, но позвольте мне обновить то, что я сделал, так что, может быть, это пригодится кому-то в будущем.
Я думал, что это был какой-то король проблемы с разрешениями, поэтому я попытался chmod 777
а также chown nobody:nobody
с разными конфигурационными файлами, но та же ошибка сохраняется. Наконец, я попробовал простой файл конфигурации nginx без "трюков Symfony", тот, который я пытался проверить правильность установки LEMP перед клонированием кода проекта.
server {
server_name default;
access_log /var/log/nginx/default_access.log;
error_log /var/log/nginx/default_error.log;
#if defined in each location directive can be defined diferent root locations.
root /var/www;
location / {
index index.html index.php;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Смысл в том, чтобы увидеть типичную доброжелательную страницу от nginx и <?php phpinfo(); ?>
тестовая страница, чтобы убедиться, что PHP-FastCGI был правильно настроен. Я положил файлы из установки nginx по умолчанию на /var/www/
и вуаля! Я получил доступ к index.html
и к info.php
с успешными результатами. Хорошо, тогда я продолжаю делать тестовую папку, чтобы поместить эти файлы туда и скопировать их в мою папку проекта Symfony тоже. Вещь выглядела так...
[root@machine www]# tree -L 2
.
├── 404.html
├── 50x.html
├── test
├── index.html <<<<<
└── info.php <<<<<
├── index.html <<<<<
├── info.php <<<<<
└── project
├── app
├── bin
├── composer.json
├── composer.lock
├── index.html <<<<<
├── info.php <<<<<
├── lib
├── LICENSE
├── nbproject
├── private
├── README.md
├── src
├── UPGRADE-2.2.md
├── UPGRADE-2.3.md
├── UPGRADE-2.4.md
├── UPGRADE.md
├── vendor
└── web
В результате я смог получить доступ к...
/index.html
/info.php
/test/index.html
/test/info.php
Успешно, но это дает мне ту же ошибку на
/project/index.html
/project/info.php
Итак, я продолжаю удалять всю папку и начинаю заново, проверяя правильность настройки nginx в папке проекта, а затем git clone мой код. И вот он... полностью функционален сейчас.
Файл конфигурации Nginx сейчас запущен...
server {
listen 80;
server_name symfony-project;
access_log /var/log/nginx/symfony2_access.log;
error_log /var/log/nginx/symfony2_error.log;
#if defined in each location directive can be defined diferent root locations.
root /var/www/project/web;
# strip app.php/ prefix if it is present
rewrite ^/app_dev\.php/?(.*)$ /$1 permanent;
location / {
index app_dev.php;
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /app_dev.php/$1 last;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location ~ ^(.+\.php)(/.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
}