Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 30
×

Проблемка з symfony 2 and nginx

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Значить хочу налаштувати smyfony 2 під nginx.

Спробував ось:
symfony.com/...​_configuration.html#nginx
stackoverflow.com/...​aching-symfony-2-on-nginx

zalas.eu/...​ion-for-symfony-projects

Результат один і той же. Завантажує app.php, як файл.

В чому може бути проблема?

UPD 1
Разрыв мозга Встановив Ansible + vagrant найпростішу кофігурацію. Працює з коробки.
bitbucket.org/...​torx/vagrnat-and-symfony2

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

index index.html index.htm index.php index.cgi index.pl index.xhtml app.php app_dev.php;
try_files $uri $uri/ /app.php?$query_string;

Ви 3 дні траххалися з конфігом nginx? Серйозно?!

Є рішення? Не три дні і це не важливо.

Не три дні
Глянув дату статті, тепер бачу, що 4.
Є рішення?
Та, хоч би і перевстановити з нуля весь Lamp, а не змушувати людей гадати.

Особисто, я в якості локального сервера використовую це: rtcamp.com/easyengine
Він заточений під wordpress, але я використовую його і для звичайних проектів. І symfony, і laravel шляхом незначної правки nginx конфіга піднімав за лічені хвилини.

Переустановить это конечно хорошо.
Но знать причину это важно и возможно не только для ТС.

Поэтому разобраться что-почем, все таки стоит.

В тому і справа проблем не повинно бути. Але є певний плаваючий баг, який є в (припущення ) стандартних налаштуваннях nginx + php-fpm

Я вчора поставив vagrant, symfony, і в мене схожа фігня. Конфіги усі рекомендовані, File not found.

Якщо

File not found
Можливо потрібно поправити права Vagrant в config.vm.synced_folder «path/to/folder/project», «/var/www/project» owner: «www-data», group: «www-data»
Або насправді нема файла тоді уважно треба переглянути root шлях до проекта в конфізі nginx.

В мене ж проблема в тому що файл не виконується php-fpm.

Пока нету времени. Есть идеи куда копать. Попробую отпишусь.

Або насправді нема файла тоді уважно треба переглянути root шлях до проекта в конфізі nginx.
Справді, проблема була в цьому. Дякую за підказку.

ls -la /var/run/php5-fpm.sock
less /etc/nginx/nginx.conf — итересует параметр user

Все на:
user www-data

а что в /var/log/nginx/avto.dev-error.log

Вот в том и суть непонятки... ничего.

делаем от рута (или от www-data)
socat -x unix-listen:/tmp/php5-fpm.sock,fork unix:/var/run/php5-fpm.sock

где /tmp/php5-fpm.sock — временный сокет, /var/run/php5-fpm.sock — тот , что прописан в конфиге.

если создавали временный сокет от рута, то chmod 777 /tmp/php5-fpm.sock

перенастраиваем конфиг хоста в nginx на /tmp/php5-fpm.sock и смотрим, есть ли коннект вообще к сокету

пусто и после обращения к сайту, да?

да после обращения к сайту. Надо в nginx посмотреть как сделать отладку типа сюда попал сюда нет.

логи в режиме debug
error_log /var/log/nginx/test-error.log debug;
ну и access_log естественно.

Уже выставил. Даже access log пустой.

может ты не к тому серваку обращаешься ? ну типа сетапиш один, а в броузер его брат ?

скачиваю app.php. Пинговал.

а что если положить не пхп файлик а html ?

Давай уже наверное больше инфы.
Полный конфиг nginx’а.
Пути к проекту.
Можно конфиг php.
Возможно что-то удастся там разглядеть и кто-то что-то дельное подскажет.

Взял твой конфиг. Подправил только название сервера и файла логов.
Конфиги nginx, php, php-fpm, как есть после установки.

Ubuntu 14.04 LTS

Ну тогда мысли кончились. У меня такие же конфиги на той же ОСи и все работает.

Твоя проблема в том, что у тебя

location ~ ^/(app|app_dev|config)\.php(/|$)
этот location не отрабатывает.
Попробуй может в начале конфига добавить index app_dev.php. Сомневаюсь что поможет, но больше мыслей нет.

Сделал апдейт статьи. Нашел обходной путь но проблема так и осталась.

а какой у тебя php версии ? где то мне попадалось что в 5.4 слушать будет на 9001 порту а не на 9000

5.5.9 из коробки Ubuntu 14.04

Имел подобные проблемы на локальной машине, но у меня не работали любые php проекты (не только Symfony). Ковырялся пару дней, в итоге плюнул и стал работать на встроенном пхпшном сервере. Для быстрого поднятия проекта, к слову, достаточно удобно: symfony.com/...​/web_server/built_in.html — вдруг кому пригодится.

P.S. Когда найдете причину, не забудьте, пожалуйста, описать ее и работающее решение.

На встроенном все ок работает.
Будут копать. Сейчас буду делать через виртуалку ansible + Vagrant.

Конфіг би свій показали: конфіг nginx для сайту, конфіги php-fpm (обидва)

Конфиги php-fpm по-умолчанию как есть.
Сейчас попробовал этот конфиг. dou.ua/...orums/topic/12855/#656113
Трабл остался.

/etc/php-fpm.d/www.conf
Проверить настройки
listen — слушает ли он сокет, как указано в конфигах nginx
security.limit_extensions — есть ли среди разрешённых расширений .php

Упростить конфиг nginx до примитивного. Убрать все оверрайты и прочее, оставить только необходимое, например

server { listen 80; root /home/dimon/www/avto.dev/web/; server_name avto.dev; location ~* .+\.(ico|jpg|jpeg|gif|png|txt|csv|css|js|doc|docx|docm|swf|xml|xlsx|xls|zip|rar|eot|otf|woff|woff2|ttf|hbs)$ { root /home/dimon/www/avto.dev/web/; access_log off; expires 3d; } location / { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index app.php; send_timeout 1800; fastcgi_read_timeout 1800; fastcgi_pass unix:/var/run/php5-fpm.sock; } }
И потом уже, добившись работы с минимальным конфигом, от него плясать. И не пытайтесь копировать чужие конфиги. Пишите свои. Даже конфиг, который указан в доках к CMS/фреймворку, является лишь примерной подсказкой.

/etc/php5/fpm/pool.d/www.conf Стандартный конфиг, как для убунты.
user = www-data
group = www-data

listen = /var/run/php5-fpm.sock

listen.owner = www-data
listen.group = www-data

Уже похоже придется в ручную солнце закатывать. Буду писать под Ansible + Vagrant для
Vbox.

Еще один совет — посмотрите версии ПО на сервере (php, nginx) и при поиске указывайте их. Может все конфиги, что Вы находили в сети, просто не для вашей версии.

sudo nginx -t — скорее всего ошибка в конфиге nginx

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Все равно отдает файл. Проблема где-то в настройках php-fpm.

А php-fpm стартует нормально? Что
ps -e | grep php-fpm
говорит?

Однозначно работают.

All the PHP requests will be routed to the fastcgi deamon (running locally on port 9000).
fastcgi поднят или нет ?

Да. Другие сайты работают. Вопрос куда копать. Ошибки не пишет или не нашел.

что с
This named location is reached only if user wasn’t requesting an existing file or directory. We want to rewrite such a request to the default controller.

location ~ \.php {
fastcgi_index app.php;
fastcgi_pass 127.0.0.1:9000;
и правами на файл ?

И через unix:// и через

127.0.0.1:9000
все работает на других сайтах.
С правами надо внимательно еще раз пересмотреть.

сюда еще можно добавить:

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

Есть такой параметр.

а кинь сюда nginx.conf и php-fpm.conf
у меня такое чувство, что все смотрят куда-то «не туда»

Последний конфиг был gist.github.com/...dmis/a21e6bdcaaa707a678d5
php-fpm.conf по умолчанию.

Все не могу собраться до разбирать в ситуации.
Хотя есть большая вероятность что и не сделаю :)

есть у меня мысль, что set используется криво

set $front_part «app_dev»;
set $front «${front_part}.php»;

кавычки только подправишь еще

а вообще непонятно, нафига это в конфиге лепить

Ну это я так, в качестве затычки в конфиг засунул. По той причине, что что если мне понадобится prod версия, нужно изменить только app_dev (просто было у меня такое, что приходилось по всему конфигу app.php выискивать. А конфиги, позвольте заметить, бывают весьма немаленькие).

Ну а вообще да, я не настаиваю на том, что бы это был пример для подражания.

Підписатись на коментарі