Подключение к базе данных не работает при входе в приложение Symfony 3.4

Я развернул веб-сайт Symfony в веб-приложении Azure MySQL + PHP, и он развернулся, но я столкнулся с этой ошибкой:

The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar

Итак, я заключил имя пользователя и пароль db в цитату, но теперь, когда я пытаюсь войти на свой веб-сайт, я сталкиваюсь с этой ошибкой:

php_network_getaddresses: getaddrinfo failed: No such host is known.

Кажется, что соединение с базой данных не работает, и всякий раз, когда код запускает запрос, он прерывается. Я также попытался запустить простой запрос mysqli и успешно получил результат.

Моя версия Symfony - 3.4.

Версия PHP - 7.2

Версия MySQL - 5.1

КОД:

Parameters.yml

    parameters:
        database_host: '`db_host`'
        database_port: null
        database_name: db_name
        database_user: '`db_user`'
        database_password: '`my_db_password`'
        mailer_transport: smtp
        mailer_host: 127.0.0.1
        mailer_user: null
        mailer_password: null
        secret: b379ec1bf07cf3925582e96b26ffe5ad0052aff8

Config.yml

    doctrine:
    dbal:
        server_version: 5.1
        driver: pdo_mysql
        host: '%database_host%'
        port: '%database_port%'
        dbname: '%database_name%'
        user: '%database_user%'
        password: '%database_password%'
        charset: UTF8
        types:
            json: Sonata\Doctrine\Types\JsonType

Не могли бы вы опубликовать фактический код подключения?

War10ck 12.11.2018 21:11

@ War10ck добавлен, проверьте обновленный вопрос

Owais Aslam 13.11.2018 06:55
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
465
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Согласно вашей информации об ошибке The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar, это было вызвано символом @, который является зарезервированным индикатором в YAML 1.2. Пожалуйста, обратитесь к официальный документ спецификации YAML, чтобы узнать это через поиск @ в браузере. И дополнительные сведения об использовании Symfony YAML (3.4) для синтаксического анализа файла YAML, см. Формат YAML на официальном сайте Symfony, и вот краткая ссылка ниже.

Strings containing any of the following characters must be quoted. Although you can use double quotes, for these characters it is more convenient to use single quotes, which avoids having to escape any backslash :

:, {, }, [, ], ,, &, *, #, ?, |, -, <, >, =, !, %, @, `

The double-quoted style provides a way to express arbitrary strings, by using \ to escape characters and sequences. For instance, it is very useful when you need to embed a \n or a Unicode character in a string.

В вашем описании я не вижу @ в вашем коде, поэтому я не могу предоставить какой-либо код, помогающий исправить ошибку. Но я воспроизвожу информацию об ошибке с помощью простого кода и надеюсь, что это поможет.

<?php
include_once('vendor/autoload.php');
use Symfony\Component\Yaml\Yaml;
$value = Yaml::parse("hello: @world");
printf($value);
?>

Первый символ @ в hello вызывает ту же ошибку. Возможно, такая же проблема возникла, когда вы ссылаетесь на переменную в Config.yml. Если вы можете обновить свой код для получения дополнительных недостающих деталей, это полезно для исправления.

Если возникнут какие-либо вопросы, пожалуйста, дайте мне знать.

Спасибо за ценный ответ :)

Owais Aslam 15.11.2018 18:34
Ответ принят как подходящий

Исправлено, добавив конфигурацию базы данных на основе URL в мой файл config.yml, как показано ниже.

    doctrine:
        dbal:
            server_version: 5.1
            driver: mysqli
            host: '%database_host%'
            port: '%database_port%'
            dbname: '%database_name%'
            user: '%database_user%'
            password: '%database_password%'
            # if the url option is specified, it will override the above config
            url: pdo-mysql://db_user:[email protected]:3306/db_name

Ссылки: Ссылка 1Ссылка 2

Другие вопросы по теме