Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过Symfony2和x2B传递的条令凭证;nginx环境变量是';不承认;DB';连接被拒绝';。命令行可以。如何修复?_Php_Symfony_Nginx_Doctrine Orm_Symfony 2.6 - Fatal编程技术网

Php 通过Symfony2和x2B传递的条令凭证;nginx环境变量是';不承认;DB';连接被拒绝';。命令行可以。如何修复?

Php 通过Symfony2和x2B传递的条令凭证;nginx环境变量是';不承认;DB';连接被拒绝';。命令行可以。如何修复?,php,symfony,nginx,doctrine-orm,symfony-2.6,Php,Symfony,Nginx,Doctrine Orm,Symfony 2.6,在新的symfony2安装中,我通过systemd和 cat /etc/systemd/system/nginx.service [Unit] Description=nginx After=syslog.target network.target [Service] Type=forking EnvironmentFile=-/etc/sysconfig/nginx ExecStartPre=/usr/sbin/nginx -t -c

在新的symfony2安装中,我通过systemd和

cat /etc/systemd/system/nginx.service 
    [Unit]
    Description=nginx
    After=syslog.target network.target

    [Service]
    Type=forking
    EnvironmentFile=-/etc/sysconfig/nginx
    ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
    ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s QUIT $MAINPID
    PrivateTmp=true
其中定义了环境变量

cat /etc/sysconfig/nginx
    SYMFONY__DATABASE__USER="root"
    SYMFONY__DATABASE__PASSWORD="testtesttest"
使用

并在重启后进行验证

php -i | grep SYMFONY__DATABASE
    SYMFONY__DATABASE__PASSWORD => "testtesttest"
    SYMFONY__DATABASE__USER => "root"
    _SERVER["SYMFONY__DATABASE__PASSWORD"] => "testtesttest"
    _SERVER["SYMFONY__DATABASE__USER"] => "root"
根据“”:

现在您已经声明了一个环境变量,它将出现 在PHP
$\u服务器的全局变量中。然后Symfony会自动设置
所有的
$\u服务器
变量前缀为
SYMFONY\u
作为 服务容器

现在,您可以在任何需要的地方引用这些参数

因此,在中更改凭据

cat ./app/config/parameters.yml
    parameters:
        database_driver:   pdo_mysql
        database_host:     127.0.0.1
        database_port:     3306
        database_name:     "test_01"
        database_user:     "%database.user%"
        database_password: "%database.password%"
        mailer_transport:  smtp
        mailer_host:       ~
        mailer_user:       ~
        mailer_password:   ~
        locale:            en
        secret:            zzzz
使用默认的条令配置

cat ./app/config/config.yml
    ...
    # Doctrine Configuration
    doctrine:
        dbal:
            driver:   "%database_driver%"
            host:     "%database_host%"
            port:     "%database_port%"
            dbname:   "%database_name%"
            user:     "%database_user%"
            password: "%database_password%"
    ...
应继承环境定义的值

user <= "%database_user%" <= "%database.user%" <= SYMFONY__DATABASE__USER <= "root"
password <= "%database_password%" <= "%database.password%" <= SYMFONY__DATABASE__PASSWORD <= "testtesttest"
从壳牌来看,没有问题

mysqladmin -u root -p create test_01
Enter password: 
=> "testtesttest"

mysqladmin -u root -p 
    ...
    +------------------------------+
    |          Databases           |
    +------------------------------+
    ...
    | test_01                      |
    +------------------------------+

需要在上面的配置中进行哪些更改,以便条令执行者正确使用ENV提供的凭据?

显然这是一个已知的错误

解决办法,但尚未解决

php app/console doctrine:database:create
    Could not create database for connection named `test_01`
    SQLSTATE[HY000] [2002] Connection refused
mysqladmin -u root -p create test_01
Enter password: 
=> "testtesttest"

mysqladmin -u root -p 
    ...
    +------------------------------+
    |          Databases           |
    +------------------------------+
    ...
    | test_01                      |
    +------------------------------+