Не запускаются 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
Источник
unixforum.org
Форум для пользователей UNIX-подобных систем
- Темы без ответов
- Активные темы
- Поиск
- Статус форума
nginx php не работает
Модератор: Bizdelnick
nginx php не работает
Сообщение cougraAcc » 10.04.2010 14:35
Re: nginx php не работает
Сообщение sash-kan » 10.04.2010 16:45
Re: nginx php не работает
Сообщение Debian GreS » 12.04.2010 20:57
Все настройки nginx находятся в файле /etc/nginx/nginx.conf. Отредактируем хост по умолчанию:
Внесем следующие изменения:
В начальной конфигурации дефолтного хоста, блок *location
.php$* закомментирован. Необходимо раскомментировать его. При этом, необходимо обратиться внимание на строчку «includefastcgi_params», что есть ошибка. Необходимо вписать пробелы, как это указано выше.
После чего необходимо перезагрузить nginx:
Далее, запускаете свой проверочный php-скрипт. В результате будет выведена информация о PHP и его окружении. Необходимо обратить внимание на строчку Server API. Если значение в данной строке — CGI/FastCGI, то можно констатировать, что PHP под nginx успешно установлен.
Источник
Почему не обрабатываются файлы .php в связке Nginx + PHP-FPM?
Подскажите пожалуйста, в чем может быть проблема.
Ubuntu Server 18.04
Установил Nginx 1.14 и PHP 7.2 FPM
Файлы .html нормально открываются а при обращении к .php просто пустая страница, ни ошибки ничего.
В логах пусто, только логи доступа.
php.ini стандартный
Поменял в нем только вот это
cgi.fix_pathinfo=0 (было 1)
Его я не трогал тоже, стандартный.
Конфиг www.conf тоже стандартный
В директории сайта все папки и файлы выставил владельца www-data, до этого был root
В чем может быть проблема, что я не доконфигурировал?
Естественно я каждый раз при изменении конфигов перезагружал и nginx и php-fpm
systemctl restart nginx && systemctl restart php7.2-fpm
- Вопрос задан более двух лет назад
- 708 просмотров
Попробуйте такой конф:
Вчера уже не получилось проверить, вот сейчас проверил.
Сейчас проверил и начал было уже писать Вам о новой ошибке.
С Вашим конфигом теперь при открытии любой страницы хоть .php хоть .html выскакивает 404 страница ошибки.
Потом еще раз глянул в конфиг и обнаружил что когда на тостер закидывал конфиг я домен подменил на site.ru, балбес блин )))
В общем я проверил и с Вашим конфигом теперь работает все!
За что огромное спасибо!
Отмечу решением.
У меня есть еще маленький вопрос, могу ли я создать пользователя и группу к примеру «yuri» и настроить php-fpm и nginx чтобы они работали и выполняли файлы сайты от этой группы и пользователя?
Ну соответственно я и сам сайт весь переведу на эту группу и пользователя CHOWN -R
А еще лучше если Вы мне подскажете как вообще для каждого сайта свой юзер и группа или так не делают по феншую и просто я загоняюсь? Как правильно делать? Или оставить родную группу www-data?
Я понял Вас, оставлю как есть группу и пользователя.
Источник
Не получается подружить 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 отказывается запускаться.
Источник