Где php + laravel читает строку подключения к БД, потому что во время выполнения по умолчанию используется идентификатор пользователя, который не определен нигде в моем приложении? - PullRequest
0 голосов
/ 21 ноября 2018

Я размещаю свое приложение php + laravel rest API в службе приложений Azure (Windows).Сервер приложений поставляется с «MySQL в приложении» (встроенный в него).Я могу получить доступ к базе данных mysql через myphpadmin.Я вижу, что было два предопределенных пользователя, один из них root , а другой - azure .Для подключения к базе данных с помощью myphpadmin он использует идентификатор пользователя Azure.

В моем приложении в .env у меня DB_USERNAME установлено на azure ив файле database.php, если идентификатор пользователя не найден в конфигурации по умолчанию, для него устанавливается значение по умолчанию «azure».Также в настройках приложения сервера приложений Azure у меня определены все строки подключения, и там я также использую Azure в качестве DB_USERNAME.

Но когда я побежал почтальон к одной из конечных точек, я заметил, что конецточка не работает из-за «Доступ запрещен для пользователя« root »@« localhost »».Я действительно запутался, где бы мое приложение использовало root как имя пользователя вместо azure.

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Вам также необходимо настроить его не только в .env, как вам подсказал @EmtiazZahid, и вы должны перезапускать сервер каждый раз, когда вы делаете какую-либо настройку в .env

0 голосов
/ 21 ноября 2018

Не забудьте запустить команду php artisan config:cache при изменении любых данных в env

laravel всегда читает данные конфигурации из своего кэша.

, поэтому, если ваши учетные данные .env изменены на сервере, вы также должны снова кэшировать эти учетные данные

, а также убедиться, что в файле конфигурации вашей базы данных по умолчанию считываются все учетные данные из .env.

Пример:

'mysql' => array(
            'driver'    => 'mysql',
            'host'      => env('DB_HOST','localhost'),
            'database'  => env('DB_DATABASE','billing'),
            'username'  => env('DB_USERNAME','root'),
            'password'  => env('DB_PASSWORD', '1234'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        )

Примечание:

Если вы выполняете команду config: cache во время процесса развертывания, вы должны быть уверены, что вызываете толькофункция env из ваших файлов конфигурации.После того, как конфигурация будет кэширована, файл .env не будет загружен, и все вызовы функции env вернут ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...