Почему при попытке зайти в phpMyAdmin я получаю сообщение об ошибке 404 - Страница не найдена?

Здравствуйте! У меня возникла проблема с сервером, и я не совсем понимаю, что делать. У меня запущен сервер с nginx, и, кажется, все настроено правильно, так как ошибок во время установки phpMyAdmin не было. Однако при попытке доступа к phpMyAdmin я получаю ошибку:  
<pre><code>404 Not Found
nginx/1.24.0 (Ubuntu)</code></pre>  

Хотелось бы разобраться, что я мог сделать неправильно или какие шаги могли быть упущены. Ниже приведена конфигурация Nginx:  
<pre><code>server {
    listen 443 ssl;
    server_name boostbid.ru www.boostbid.ru;

    ssl_certificate /etc/letsencrypt/live/boostbid.ru/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/boostbid.ru/privkey.pem; # managed by Certbot

    root /var/www/boostbid.ru;
    index index.html;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://localhost:3000; # Если используется прокси
    }

    location /phpmyadmin {
        root /usr/share/;
        index index.php;

        location ~ ^/phpmyadmin/(.+\.php)$ {
            root /usr/share/phpmyadmin;
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php8.3-fpm.sock; # Укажите правильный путь к сокету PHP-FPM
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        location ~ ^/phpmyadmin/(.+\.css|.+\.js|.+\.png|.+\.jpg|.+\.gif|.+\.ico|.+\.woff2?)$ {
            root /usr/share/phpmyadmin;
        }
    }
}

server {
    if ($host = boostbid.ru) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    server_name boostbid.ru;
    return 301 https://$host$request_uri; # Перенаправление HTTP на HTTPS
}</code></pre>  

Подскажите, пожалуйста, в чем может заключаться ошибка?
  • 17 февраля 2025 г. 8:24
Ответы на вопрос 2
Ошибка 404 «Страница не найдена» при попытке доступа к phpMyAdmin может быть вызвана несколькими причинами, особенно в конфигурации Nginx. Давайте разберем вашу конфигурацию и предложим несколько возможных решений.

### Проблемы в конфигурации

1. **Неверный путь к `root` для phpMyAdmin**:
   В вашем конфиге указан документ `root /usr/share/;`, а в блоке `location ~ ^/phpmyadmin/(.+\.php)$` вы указываете `root /usr/share/phpmyadmin;`. Однако в Nginx `root` работает по-другому. Правило `root` применяется на уровень, где оно указано, и его значения объединяются с URI. Попробуйте изменить `root` следующим образом:

   ```nginx
   location /phpmyadmin {
       root /usr/share;  # здесь root указывает на /usr/share
       index index.php;
   }
   ```

2. **Проблемы с путями к файлам**:
   Убедитесь, что phpMyAdmin действительно установлен в папке `/usr/share/phpmyadmin/`. Проверьте, что файл `index.php` существует в этой директории. Вы можете сделать это, выполнив команду:

   ```bash
   ls /usr/share/phpmyadmin/
   ```

3. **Проблема с правильным проксированием PHP**:
   Убедитесь, что Nginx может правильно обрабатывать PHP-файлы. Проверьте, что в конфигурации `fastcgi_param SCRIPT_FILENAME` указывает на правильный путь к файлам. Проверьте, правильно ли настроен PHP-FPM и доступен ли сокет:

   ```nginx
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   ```

   Попробуйте явно указать путь к phpMyAdmin в вашем `SCRIPT_FILENAME`:

   ```nginx
   location ~ ^/phpmyadmin/(.+\.php)$ {
       fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin/$1;
       include snippets/fastcgi-php.conf;
       fastcgi_pass unix:/run/php/php8.3-fpm.sock;
   }
   ```

4. **Ошибки в кэше браузера**:
   Иногда браузеры кэшируют старые версии страниц. Попробуйте очистить кеш браузера или открыть phpMyAdmin в режиме инкогнито.

### Пример исправленного конфигурационного файла

Исходя из вышеизложенного, вот пример исправленного фрагмента конфигурационного файла:

```nginx
location /phpmyadmin {
    root /usr/share;
    index index.php;
    
    location ~ ^/phpmyadmin/(.+\.php)$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock; 
        fastcgi_param SCRIPT_FILENAME $document_root/phpmyadmin/$1;
    }

    location ~ ^/phpmyadmin/(.+\.(css|js|png|jpg|gif|ico|woff2?))$ {
        root /usr/share/phpmyadmin;
    }
}
```

### После изменений

После внесения изменений в конфигурацию, не забудьте протестировать конфигурацию на синтаксические ошибки и перезапустить Nginx:

```bash
sudo nginx -t  # Проверка конфигурации на ошибки
sudo systemctl restart nginx  # Перезапуск Nginx
```

Если после этих шагов ошибка не исчезнет, проверьте логи Nginx и PHP, чтобы получить больше информации о возможных проблемах:

```bash
# Логи Nginx
sudo tail -f /var/log/nginx/error.log

# Логи PHP
sudo tail -f /var/log/php8.3-fpm.log  # Скорректируйте версию PHP, если необходимо
```

Если есть дальнейшие проблемы, предоставьте сообщения из логов, и мы поможем вам разобраться.
location ~ ^/phpmyadmin/(.+\.php)$ {
    root /usr/share/phpmyadmin;

Путь к файлу формируется путём простого добавления URI к значению директивы root .

URI = /phpmyadmin/index.php
root = /usr/share/phpmyadmin

В итоге nginx будет искать файл /usr/share /phpmyadmin/phpmyadmin/ index.php

Если в root убрать лишний /phpmyadmin.

location ~ ^/phpmyadmin/(.+\.php)$ {
    root /usr/share;

nginx будет искать файл /usr/share/phpmyadmin/index.php
Похожие вопросы