НейроАгент

Настройка NGINX для PHP файлов в директории /install/ phpBB

Почему PHP файлы в /install/ скачиваются вместо выполнения? Узнайте, как правильно настроить NGINX для обработки PHP через PHP-FPM в директории установки phpBB 3.2+.

Почему PHP файл в подпапке (/install/app.php) скачивается вместо выполнения в NGINX? Как настроить конфигурацию NGINX для корректной обработки PHP файлов в директории /install/ на сайте phpBB?

НейроАгент

PHP файлы в директории /install/ скачиваются вместо выполнения, когда NGINX не настроен правильно для обработки PHP сценариев через PHP-FPM. Это происходит, когда в конфигурации отсутствует или неправильно настроен блок location для обработки PHP файлов, особенно в директории установки phpBB. Чтобы исправить эту проблему, нужно правильно настроить NGINX с указанием пути к PHP-FPM и добавить специфичные правила для директории /install/.

Содержание


Основные причины проблемы

Основные причины, по которым PHP файлы в NGINX скачиваются вместо выполнения:

  1. Неправильная настройка fastcgi_pass - если параметр fastcgi_pass указывает на несуществующий сокет или неправильно настроен PHP-FPM, NGINX не сможет передавать PHP файлы на обработку.

  2. Отсутствие конфигурации для PHP файлов - в server блоке может отсутствовать location блок для обработки .php файлов.

  3. Конфликт с SSL сертификатами - как показывают исследования, Certbot может удалять важные настройки PHP обработки при установке SSL.

  4. Неправильные права доступа - веб-сервер (www-data, nginx, apache) может не иметь прав на чтение и выполнение PHP файлов.

  5. Проблемы с php.ini - параметр cgi.fix_pathinfo может быть установлен в 1, что вызывает проблемы с обработкой путей.


Проверка текущей конфигурации NGINX

Перед внесением изменений проверьте текущую конфигурацию:

  1. Откройте конфигурационный файл вашего сайта:
bash
sudo nano /etc/nginx/sites-available/ваш-сайт.conf
  1. Проверьте наличие следующих критических элементов:
  • Блок server с правильным server_name
  • location блок для обработки .php файлов
  • Правильный путь к сокету PHP-FPM

Важно: Конфигурация должна содержать блок, который обрабатывает все .php файлы, включая те, что находятся в директории /install/.


Правильная настройка конфигурации NGINX для phpBB

Базовая конфигурация для phpBB должна включать следующие элементы:

nginx
server {
    listen 80;
    server_name ваш-домен.com www.ваш-домен.com;
    root /var/www/phpbb;
    index index.php index.html index.htm;

    # Запрет доступа к конфиденциальным файлам
    location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|store|vendor) {
        deny all;
        return 403;
    }

    # Обработка PHP файлов
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # Обработка URL rewrite для красивых URL
    location / {
        try_files $uri $uri/ @rewriteapp;
    }

    location @rewriteapp {
        rewrite ^(.*)$ /app.php/$1 last;
    }
}

Ключевые моменты:

  • fastcgi_pass должен указывать на правильный сокет PHP-FPM
  • SCRIPT_FILENAME должен правильно указывать на файл в document root
  • Используйте try_files $uri =404 для безопасности

Конфигурация для директории /install/

Для корректной работы установщика phpBB 3.2+ требуется специальная конфигурация директории /install/:

nginx
# Специальная обработка для установщика phpBB
location /install/ {
    try_files $uri $uri/ @rewrite_installapp =404;
    
    # Обработка PHP файлов в /install/
    location ~ \.php(/|$) {
        include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        try_files $uri $uri/ /install/app.php$is_args$args;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }
}

# Внутренний rewrite для установщика
location @rewrite_installapp {
    rewrite ^(.*)$ /install/app.php/$1 last;
}

Особенности phpBB 3.2+:

  • Установщик использует app.php вместо index.php
  • Требуется специальная обработка путей вида /install/app.php/update
  • Необходимо правильно настроить PATH_INFO и SCRIPT_FILENAME

Примечание: Как указано в исследованиях, phpBB 3.2.x использует новую логику установки через app.php, что требует дополнительной настройки в NGINX.


Дополнительные решения и проверки

Если проблема сохраняется, выполните следующие проверки:

Настройка PHP-FPM

  1. Откройте php.ini:
bash
sudo nano /etc/php/8.1/fpm/php.ini
  1. Убедитесь, что:
ini
cgi.fix_pathinfo = 0
  1. Проверьте конфигурацию пула PHP-FPM:
bash
sudo nano /etc/php/8.1/fpm/pool.d/www.conf

Проверка прав доступа

bash
sudo chown -R www-data:www-data /var/www/phpbb
sudo chmod -R 755 /var/www/phpbb
sudo chmod -R 644 /var/www/phpbb/*.php

Проверка работы PHP-FPM

bash
sudo systemctl status php8.1-fpm
sudo systemctl restart php8.1-fpm

Шаги по применению изменений

  1. Проверка синтаксиса конфигурации:
bash
sudo nginx -t
  1. Перезапуск сервисов:
bash
sudo systemctl restart nginx
sudo systemctl restart php8.1-fpm
  1. Очистка кэша браузера - как указано в источниках, очистка кэша может решить проблему.

  2. Проверка прав доступа к файлам в директории /install/.

  3. Тестирование через доступ к http://ваш-домен.com/install/app.php

Если проблема сохраняется, проверьте логи:

bash
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/php8.1-fpm.log

Источники

  1. phpBB — NGINX Unit Configuration Guide
  2. nginx config for phpbb and laravel - Stack Overflow
  3. Sample nginx configuration file for phpBB - GitHub
  4. Nginx configuration for phpBB - Nginx Library
  5. Working nginx config? - phpBB Community
  6. New 3.2.X installer does not work under nginx + PHP7? - phpBB Development
  7. Trying to install phpBB (3.2.7) on CentOS 7 with Nginx - Super User

Заключение

  • Основная причина скачивания PHP файлов - неправильная конфигурация NGINX для обработки PHP через PHP-FPM, особенно в директории /install/.
  • Ключевые элементы исправления: правильный fastcgi_pass, SCRIPT_FILENAME, location блоки для .php файлов и специальные правила для /install/.
  • Обязательные шаги: проверка синтаксиса конфигурации, перезапуск NGINX и PHP-FPM, очистка кэша браузера.
  • Для phpBB 3.2+ требуется специальная обработка app.php и правильная настройка PATH_INFO.
  • Всегда проверяйте логи NGINX и PHP-FPM при возникновении проблем для диагностики конкретных ошибок.

При правильной настройке конфигурации PHP файлы в директории /install/ должны корректно выполняться вместо скачивания.