Я развернул веб-сайт 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 добавлен, проверьте обновленный вопрос






Согласно вашей информации об ошибке 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. Если вы можете обновить свой код для получения дополнительных недостающих деталей, это полезно для исправления.
Если возникнут какие-либо вопросы, пожалуйста, дайте мне знать.
Спасибо за ценный ответ :)
Исправлено, добавив конфигурацию базы данных на основе 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
Не могли бы вы опубликовать фактический код подключения?