Назад | Перейти на главную страницу

Snipe-IT: имя хоста MySQL игнорируется

У меня есть установка Snipe-IT на FreeBSD 11.3 с MySQL 5.7.27, PHP 7.3.7 и Apache 2.4.39_1.

Я столкнулся с этой ошибкой в ~snipe-it/storage/logs/laravel.log:

[2019-10-25 13:13:24] production.ERROR: PDOException: SQLSTATE[HY000] [1045] \
  Access denied for user 'snipeuser'@'localhost' (using password: YES)  \
  in /usr/local/www/apache24/snipe-it/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:27

Проблема в том, что localhost это не значение, определенное для DB_HOST в Snipe-IT's .env Файл конфигурации.

Моя конфигурация Apache 2.4 имеет эту запись VirtualHost:

<VirtualHost *:80>
    ServerName snipeit.example.edu
    DocumentRoot /usr/local/www/apache24/snipe-it/public/

    <Directory /usr/local/www/apache24/snipe-it/>
            <RequireAll>
#                    Require not ip 10.10.229.71
                    Require all granted
            </RequireAll>
            AllowOverride None
            Options None
    </Directory>

    RewriteEngine On
    # From public/.htaccess
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
    RewriteRule ^ /index.php [L]

</VirtualHost>

Мой .env файл для Snipe-IT находится в /usr/local/www/apache24/snipe-it/. Он содержит эти DB_* настройки:

DB_CONNECTION=mysql
DB_HOST=10.10.231.22
DB_DATABASE=snipeit
DB_USERNAME=snipeuser
DB_PASSWORD=mypassword
DB_PREFIX=null
DB_DUMP_PATH='/usr/local/bin'
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
DB_SOCKET=/tmp/mysql.sock
DB_SSL=false
DB_SSL_KEY_PATH=null
DB_SSL_CERT_PATH=null
DB_SSL_CA_PATH=null
DB_SSL_CIPHER=null

MySQL настроен и работает. Я могу успешно запустить SQL-клиент командной строки, используя имя хоста, имя пользователя, пароль и имя базы данных, показанные выше, для доступа к snipeit база данных. База данных снайперов существует, но в остальном она пуста.

# mysql -h 10.10.231.22 -u snipeuser -p snipeit
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 141
Server version: 5.7.27-log Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

snipeuser@10.10.231.22 [snipeit]> 

В документации Snipe-IT упоминается, что определенная информация о конфигурации кэшируется, и этот кеш, возможно, потребуется очистить после внесения изменений в файл .env. Бег:

# composer dump-autoload
# php artisan config:clear
# php artisan view:clear
# php artisan cache:clear
# php artisan route:clear
# service apache24 restart

Когда я направляю свой браузер (Firefox) на целевой URL-адрес Snipe-IT, я не получаю НИЧЕГО, пустой белый экран. Когда я редактирую .env включать:

APP_DEBUG=true

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

Access denied for user 'snipeuser'@'localhost' (using password: YES)

Тот факт, что я могу повернуть APP_DEBUG время от времени дает мне надежду, что у меня есть .env в каталоге, где его находит Snipe-IT.

Однако я не могу заставить Snipe-IT забрать мой DB_HOST значение, даже после запуска всего конфига / очистки кеша. Он все еще пытается подключиться к localhost хотя .env файл говорит 10.10.231.22.

Что мне нужно изменить, чтобы Snipe-IT использовал правильный DB_HOST стоимость?