[英]Database connection not working while logging in to Symfony 3.4 app
我已经在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.
似乎数据库连接不起作用,并且只要代码运行查询,它就会中断。 我也尝试运行简单的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
配置文件
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
The reserved indicator "@" cannot start a plain scalar; you need to quote the scalar
,它是由字符@
引起的,该字符是YAML 1.2中的保留指示符。 请通过浏览器中的搜索@
来参考YAML官方规范文档 。 有关使用Symfony YAML(3.4)解析YAML文件的更多注释详细信息,请参阅Symfony官方网站上的YAML格式 ,以下是此处的简短参考。
包含以下任何字符的字符串都必须加引号。 尽管您可以使用双引号,但是对于这些字符,使用单引号更为方便,这样可以避免转义任何反斜杠:
:,{,},[,],,,&,*,#,?,|,-,<,>,=,!,%, @ ,`
双引号样式通过使用\\来转义字符和序列,提供了一种表达任意字符串的方法。 例如,当您需要在字符串中嵌入\\ 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
发生相同的问题。 如果您可以更新代码以获取更多缺失的详细信息,则有助于修复问题。
如有任何疑问,请随时告诉我。
通过在我的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:db_password@127.0.0.1:3306/db_name
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.