- Не запускаются PHP скрипты на NGINX
- Не работает php в связке nginx + php5-fpm
- Установка и базовая настройка nginx и php-fpm для разработки проектов локально в Ubuntu 16.04
- Установка пакетного менеджера aptitude, обновление индекса и пакетов
- Установка и настройка nginx (версия >= 1.10.0)
- Файл hosts
- Установка php-fpm (>=7.0)
- Не получается подружить nginx и php
Не запускаются PHP скрипты на NGINX
Приветствую всех форумчан, столкнулся с такой проблемой, на сервере Ubuntu 20.04 установлен NGINX+PHP7.4+MariaDB, NGINX работает испрапвно, html страничку при обращении к хосту выдаёт правильно, файл phpinfo.php при обращении не скачивается, а отображает информацию включая Server API: FPM/FastCGI — это говорит о том что PHP работает корректно, phpmyadmin тоже работает исправно, но вот проблема, пытаюсь залить хотябы скрипт форума phpbb и обращение к хосту выдаёт белую страницу, во всех папках присутствует файл .htaccess это я так понимаю атрибут APACHE, может какая то несовместимость? Как решить данную проблему и реально ли?
Кто знает, мой друг, кто знает? Кстати, что в журнале ошибок?
у тебя должен быть установлен php-fpm 7.4
в настройках nginx должен быть указан его сокет
Нет сокета -> нет коммуникации с fpm -> нет php -> нет phpinfo
А ОП нам говорит, что phpinfo есть.
ну пусть по мануалу пройдется и наличие процесса php-fpm проверит
Источник
Не работает php в связке nginx + php5-fpm
Добрый вечер, даже не знаю что не работает, html работает, а при заходе на страницу php в хроме: Ошибка. Ссылка не работает. в логах php5-fpm все нормально, в nginx пусто в логах ошибок, php5-fpm слушает 9000 порт, было установлено: nginx/1.0.11 PHP 5.3.3-7+squeeze3 with Suhosin-Patch (cgi-fcgi) с подменой зависимостей на него поставил php5-fpm_5.3.3-1(плохо но может лучше, чем из репозиториев dotdeb и т.д.) все настроено. Даже не знаю куда копать, помогите пожалуйста.
user www-data;
worker_processes 1;
worker_rlimit_nofile 8192;
worker_priority -5;
pid /var/run/nginx.pid;
events <
worker_connections 768;
# multi_accept on;
>
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable «msie6»;
gzip_min_length 1100;
# gzip_vary on;
gzip_proxied any;
gzip_comp_level 9;
gzip_buffers 4 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
map $scheme $server_https <
default off;
https on;
>
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
>
server <
listen 80;
root /var/www;
index index.html index.htm;
server_name localhost;
location / <
# First attempt to serve request as file, then
# as directory, then fall back to index.html
try_files $uri $uri/ /index.html;
>
error_page 500 502 503 504 /50x.html;
location = /50x.html <
root /usr/share/nginx/www;
>
\.php$ <
# fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have «cgi.fix_pathinfo = 0;» in php.ini
#
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
>
/sites-enabled/site.ru (изменил свой сайт на site.ru)
server <
listen 80;
server_name site.ru;
root /var/www/site.ru;
index index.php;
* ^.+.(js|css|png|jpg|jpeg|gif|ico)$ <
access_log off;
expires max;
>
location
.php$ <
# fastcgi_split_path_info ^(.+\.php)(.*)$
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /site.ru;
fastcgi_param SCRIPT_FILENAME /site.ru$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /site.ru$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
>
location = /favicon.ico <
log_not_found off;
access_log off;
>
location = /robots.txt <
allow all;
log_not_found off;
access_log off;
>
## Disable viewing .htaccess & .htpassword
location
в настройках php5-fpm в файле /pool.d/ww(w).conf (добавил скобки, а то в ссылку преобразует) поменял только:
pm.max_children = 10
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 10
и по дефолту было:
[www]
listen = 127.0.0.1:9000
user = www-data
group = www-data
Источник
Установка и базовая настройка nginx и php-fpm для разработки проектов локально в Ubuntu 16.04
Здравствуй, уважаемый пользователь Хабрахабра. Мое повествование будет о том, как подготовить почву для локальной веб-разработки проектов в операционной системе Ubuntu 16.04.1 LTS.
В данной статье хочется развеять и разъяснить возможные трудности связанные с установкой и настройкой ПО, которое требуется для современной веб-разработки, с которыми возможно сталкиваются начинающие разработчики и не только.
Технологии которые будут использованы в статье: nginx, php-fpm.
Перед началом повествования, хочу отметить, что я проделывал все эти действия на «голой» системе.
Я буду работать с пакетным менеджером aptitude. Так же рекомендую обновить индекс пакетов и сами пакеты перед установкой ПО. В статье мы проделаем эти действия вместе.
Установка пакетного менеджера aptitude, обновление индекса и пакетов
Обновляем пакеты (команда обновит все пакеты, для которых есть новые версии, если потребуется удаление пакетов, то оно будет выполнено).
Установка и настройка nginx (версия >= 1.10.0)
Проверяем версию, чтобы убедиться что не установили старую, то есть ниже 1.10.0.
Установку и запуск произвели, теперь пойдем в каталог туда куда установлен наш nginx и посмотрим на его структуру. Каталог nginx находится по такому пути:
Посмотреть содержимое директории можно командой ls, с флагами -la будет удобнее просматривать содержимое каталога (в действительности эту команду с конкретными флагами можно описать детальнее и вернее, но у нас сегодня другая тема).
Наc интересуют в данный момент два каталога, которые вы видите на скриншоте. Это каталоги sites-available и sites-enabled.
Давайте перейдем в каталог sites-available и начнем конфигурировать наш виртуальный хост (сайт).
Перед началом создания конфигурационного файла, проверим что лежит у нас в данном каталоге. В моей случае каталог не пустой, в нем уже есть конфигурационные файлы, я их затер, чтобы не вводить вас в заблуждение.
В случае установки nginx «с нуля», именно «с нуля», так как при удалении nginx командой
или конфигурационные файлы остаются и если вы вдруг будете не понимать, почему nginx не работает и захотите его переустановить (обычно к такому прибегают начинающие пользователи Linux), то и после переустановки он не будет корректно работать, из-за того что в старых конфигурационных файлах (они не удаляются после удаления командой remove) прописаны неверные настройки, их придется удалить, либо настроить верно, только тогда nginx заработает.
Рекомендую удалять командой sudo apt-get purge nginx или sudo apt purge nginx . Если вы используете пакетный менеджер aptitude, то команда sudo aptitude purge nginx удаляет пакет полностью со всеми зависимостями и конфигурационными файлами.
В этом каталоге будет по умолчанию один файл, с названием default. В нем будет конфигурационный файл с примером, с комментариями, его вы можете изучить на досуге, а можете и вовсе удалить (всегда можно обратиться к официальной документации).
Создадим свой конфигурационный файл, который будет соответствовать названию домена нашего локального сайта (или реального, если уже знаете его название). Это удобно, в будущем, когда будет много конфигурационных файлов, то это избавит вас от путаницы в них. У меня этот файл будет называться project.local.
Посмотрим что получилось.
Теперь откроем его в редакторе, я открою его в nano.
Видим что он у нас пустой. Теперь перейдем к формированию нашего файла. Нужно привести конфигурацию к такому виду, как написано ниже. Я опишу только жизненно важные директивы этого файла, описывать остальное не буду, так как это не является на данный момент важным, все-таки у нас тема базовой настройки. Этих настроек с «горкой» хватит для разработки проектов локально, не только мелких, но и довольно крупных. В следующих статьях опишу отдельно каждые использованные директивы (именно так называются строки, например server_name) этого файла.
Смотрите комментарии прям в конфигурационном файле.
Сохраняем файл. Теперь нам надо проверить, нет ли в нем ошибок. Сделать мы это можем командой.
Если видим такую информацию как на скриншоте, значит у нас все верно, может продолжать настройку. Если вы получаете какие-либо ошибки, стоит перепроверить конфигурационный файл.
Теперь нам надо активировать конфигурационный файл, в каталоге /etc/nginx/sites-enabled/ необходимо создать симлинк (символическая ссылка). Если у вас nginx был установлен «с нуля», то в этом каталоге есть симлинк на файл default, про который рассказывалось выше, его можно удалить, если он вам не требуется. Переходим в нужный каталог.
Теперь мы в нужном каталоге. Давайте создадим наш симлинк. Для создания используется команда ln с флагом -s, далее мы укажем путь до нашего конфига project.local.
Посмотрим на наш созданный симлинк.
Чтобы убедиться что мы делаем еще все верно опять запустим команду.
Если все ок, едем дальше.
Файл hosts
Этот файл находится по пути /etc/hosts. Наличие в нем записей, позволяет запускать nginx с использованием в качестве домена localhost. В этом файле можно присваивать альтернативные псевдонимы, например для нашего проекта project.local, мы присвоим домен project.local.
Открываем файл в редакторе nano.
У вас в этом файле будет и другая информация, просто игнорируйте ее. Вам всего лишь нужно добавить строку как на моем скриншоте.
Не забываем сохранить файл. На этом настройка файла hosts закончена.
Установка php-fpm (>=7.0)
Проверяем установленную версию, на всякий случай, хотя в Ubuntu 16.04.1 в репозиториях лежит именно 7.0 версия.
Убеждаемся что все ок. Стартуем php-fpm.
Если будете править конфиги, то не забывайте рестартовать демон. Это делает так. Но нам это не потребуется.
На этом установка и настройка php-fpm закончена. Правда, это все. Это не магия, путь до сокета php-fpm у нас уже был прописан в конфигурационном файле. Конечно, вам могут понадобиться какие-либо расширения php для разработки личных проектов, но их вы можете поставить по мере того как они будут требоваться.
Теперь пойдем для в каталог с нашим проектом, у меня он лежит по такому пути.
Поднимемся на каталог выше и сделаем права 777 (то есть мы будем делать полные права каталогу с нашим проектом project.local). В будущем это избавим нас от лишних проблем.
На этом настройка ПО завершена, давайте создадим тестовый файл в нашем рабочем каталоге project.local и убедимся что все работает. Я создам файл index.php с таким содержанием.
Идем в браузер и видим что у нас все прекрасно работает! Интерпретатор php в том числе.
Источник
Не получается подружить nginx и php
Собственно сабж
Нашёл множество инструкций по поднятию стека LEMP, например эту http://rus-linux.net/MyLDP/server/Howto-install-LEMP.html делаю всё как написано. Дистрибутив — CentOS 7.
Пытаюсь открыть страницу, браузер мне вместо этого предлагает сохранить php-файл.
И ещё смежный вопрос: что нужно сделать в пакетном менеджере, чтобы установка php не тащила httpd?
чтобы установка php не тащила httpd?
Не ставить пакет php.
У тебя же по ссылке есть Отключение Httpd
скорее всего php-fpm не настроено в /etc/php-php.d/www.conf или listen не совпадает с настройкой fastcgi_pass nginx
так там для c7 не предлагают php ставить, только php-fpm. ошибся, пора спать.
Паставить, а потом отключить. Нахуа?
Вот так весело собирают пакеты в центоси. Когда у меня krfb и krdc оказались в одном пакете и ставились только вместе — я тоже был удивлён.
Ставь «nginx php5». Есть подозрение, что по зависимостям вылезают какие-то апачевские либы и модули.
В пакете php идет mod_php для апача, ну и явно указан в зависимостях httpd. Ставить надо nginx php-fpm.
Я ещё раз говорю, что всё сделал по инструкции. Установил php-fpm — не заработало, на всякий случай установил php — всё равно не заработало.
Не очень понимаю механику. С apache php соединяется при помощи модуля, для nginx такого модуля нет, но нужно запустить php-fpm «systemctl start php-fpm.service». Всё остальное тоже выполнил. Где искать ошибку?
а если телнетом на порт php-fpm стукануть, то что потдается?
Ну, если даже инструкция с самого РУСЛИНУКСНЕТ не работает, то совершенно очевидно, что способов запустить лемп-стек на центоси не существует.
Ставишь nginx + php + php-fpm , в nginx.conf :
Стартуешь демон php-fpm и проверяешь результат 🙂
Тогда еще в конфиге пула php-fpm надо на этот сокет поменять, по дефолту там 9000 порт.
а если телнетом на порт php-fpm стукануть, то что потдается?
В подходе. Для начала разберись в общих чертах как эта связка должна работать, а потом уже настраивай её. Тебе ведь её потом эксплуатировать.
Не надо пытаться слепо повторить инструкцию.
В общих чертах понимаю, что к nginx php привязывается через fastcgi-интерфейс php-fpm, а к apache с помощью модуля mod_php.
В /etc/php-fpm.conf есть строки:
В /etc/nginx/nginx.conf есть:
В /var/log/nginx/access.log — сообщения об успешных отгрузках страниц.
В /var/log/nginx/error.log и /var/log/nginx/php-fpm/error.log — ничего криминального.
У меня до php-fpm клиентские запросы кажется на доходят?
Покажи весь конфиг.
nginx обращается к демону php-fpm по протоколу FastCGI через unix или обычный сетевой сокет. Домен php-fpm запускает воркеры которые исполняют php-скрипты.
А вот это вот что такое:
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
И почему директория логов php-fpm находится внутри директории логов nginx?
Опечатка
/var/log/php-fpm/error.log
Это было в /etc/nginx/nginx.conf.default Я это перенёс в /etc/nginx/nginx.conf и раскоментировал.
Вообще-то ошибка возникает на виртуальном хосте описанном в файле /etc/nginx/conf.d/mycoolhost.ru.conf такого содержания:
\.php$ но nginx ругаясь в логах на неправильный конфиг. Тогда я добавил location
\.php$ в default_server
И ты ожидаешь что php будет работать на mycoolhost.ru?
Ладно, буду дальше курить доки по nginx. Я думал, что «_» (default_server) это глобальные настройки всех виртуальных хостов.
А может в jobs? За два килорубля настрою тебе LEMP. Ну или за килорубль, если на дебиане
Демпингую на 500 WMR 😀
А чё не сразу до одного доширака?
Так неинтересно. Должен быть аукцион дух состязания.
А вообще: не получится настроить php-fpm, повесь на бекенд Апач.
Что вкурил: мне нужен модуль ngx_http_fastcgi_module, он настраивается путём добавления блока location, содержащего соответствующие директивы https://nginx.org/ru/docs/http/ngx_http_fastcgi_module.html
Если блок location добавлен в блок сервера (виртуального хоста) по умолчанию — то его действия распостраняются и на все остальные серверы.
Так у меня точно так и есть.
Проще показать.
Ладно, ладно) Ты если чё пиши, не стесняйся, мы тут.
Ты опять все усложнил.
Ну ок, читай документацию дальше. Пока-что ты прочёл явно недостаточно. Или понял недостаточно.
Держи конфиг, не мучайся
Можно указать server_name yourdomain.ru для твоего домена.
Для каждого домена я делал свой конфиг.
Centos 7 стоит php7 + php-fpm + nginx + owncloud + mariadb и т.п., без httpd
Подключаешь:
Закомментируй стандартные настройки (все секции server) в
. Почистить кеш в браузере.
Зайти на example.com/info.php
Конфиг owncloud, может кстати кому то еще пригодиться:
Так,
Если другие версии (сборки) ngninx и php-fpm данная инструкция сработает?
У меня установлены nginx 1.10.2 из epel, php и php-fpm 5.4.16 из base.
То что у тебя в nginx.conf в директиве listen не стоит default_server это нормально?
Нормально, зависит от конфигурации.
Да должно сработать конечно. Про кеш в браузере не забывайте очистить.
В сообщении выше
Сменил в конфигах tcp-сокет на файл сокета unix:/var/run/php-fpm/php-fpm.sock, почистил кэш — по прежнему нифига.
Потом решил ещё одну проверку сделать, обратился к серверу не по имени хоста, а по ip-адресу, в этом случае обращение должно идти к default_server, который отображает заглушку. Положил в корневые директории как default_server, так и хоста mycoolhost.ru файл ttt.php с содержанием:
Вобщем — запрашиваю ttt.php через ip-адрес — всё работает, запрашиваю через mycoolhost.ru — браузер вместо отображения предлагает сохранить php-файл на диск.
Для тех кто не читал переписку, любые попытки добавить директивы fastcgi_* куда-либо кроме default_server приводят к тому, что nginx отказывается запускаться.
Источник