我已经部署到Azure上的MySQL + PHP的Web应用程序一个Symfony的网站,它部署了,但我面临着这样的错误:
The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar
所以,我结束了在报价数据库用户和密码,但现在当我试图登录到我的网站,我面临着这样的错误:
php_network_getaddresses: getaddrinfo failed: No such host is known.
看来DB连接不工作,每当代码运行查询它打破。我试图运行简单的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
根据你的错误信息The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar
,它是由字符@
这是YAML 1.2预留指标造成的。请参考the YAML offical specification document通过在浏览器搜索@
知道。而对于使用的Symfony YAML(3.4)来解析YAML文件的详细笔记的详细信息,请参阅The YAML Format在Symfony的官方网站,并在这里是下面简短的参考。
包含以下任何字符字符串必须加引号。虽然你可以使用双引号,这些字符是更方便地使用单引号,这避免了逃避任何反斜线:
:, {, }, [, ], ,, &, *, #, ?, |, -, <, >, =, !, %, @, `
双引号的风格提供了一种方式来表达任意字符串,用\来转义字符和序列。举例来说,当你需要嵌入一个\ n或字符串中的Unicode字符是非常有用的。
在你的描述,我看不到任何@
在你的代码,因此,我不能提供任何代码来帮助修复错误。但是,我通过一个简单的代码重现该错误信息,并希望它能帮助。
<?php
include_once('vendor/autoload.php');
use Symfony\Component\Yaml\Yaml;
$value = Yaml::parse("hello: @world");
printf($value);
?>
@
的第一个字符hello
导致同样的错误。也许,当你在Config.yml
参考变量同样的问题发生。如果您可以更新为更失落的细节代码,这是有用的,以帮助固定。
任何问题,请随时让我知道。
通过下面我config.yml文件中添加基于URL的数据库配置固定它。
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