【问题标题】:Symfony2 on remote server shows errors远程服务器上的 Symfony2 显示错误
【发布时间】:2016-01-14 22:40:38
【问题描述】:

今天我将 Symfony2 上传到远程服务器,但出现以下错误....

致命错误:带有消息的未捕获异常“PDOException” 'SQLSTATE [HY000] [1045] 用户'root'@'localhost'的访问被拒绝 (使用密码:NO)'在 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43 堆栈跟踪:#0 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(43): PDO->__construct('mysql:host=127....', 'root', NULL, Array) #1 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php(45): Doctrine\DBAL\Driver\PDOConnection->__construct('mysql:host=127....', '根',NULL,数组)#2 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(360): Doctrine\DBAL\Driver\PDOMySql\Driver->connect(Array, 'root', NULL, 阵列)#3 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(429): 教义\DBAL\Connection->connect() #4 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(389): Doctrine\DBAL\Connection->getDatabasePlatformVersion() #5 /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(328): Doctrine\DBAL\Connection->det in /partner/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php 在第 103 行

但parameters.yml 中的MySQL 用户与“root”不同,我通过CGI 成功创建了数据库模式。当用户不同时,为什么 Symfony2 尝试连接“root”?

【问题讨论】:

  • 你能发布你的paramteres.yml文件吗
  • 您是否尝试通过某些 3rd 方客户端连接到数据库?你创建数据库了吗?
  • 是的,从 php CGI 控制台我成功创建了数据库架构

标签: php mysql symfony doctrine-orm doctrine


【解决方案1】:

你在 app.php(或 app_dev.php)上的环境配置将决定 Symfony 将加载哪个配置。如果您处于生产模式 (prod),您的所有配置都将被 app/config/config_prod.yml 中的任何内容覆盖。

您可能有一些连接细节覆盖了您的 config.yml 中的内容?

【讨论】:

    【解决方案2】:

    有两个可能的原因。

    首先,您在远程服务器上的 parameters.yml 是不同的。当您执行 composer.phar 安装 时,它会被覆盖,如果您当然这样做了并且有一项任务将 parameters.yml.dist 复制到新的 parameters.yml 文件。这是因为,在版本控制系统中,parameters.yml 文件通常会被忽略。

    其次,您需要查看您的 config.ymlconfig_*.yml 文件。 config_*.yml 文件会覆盖您的 config.yml 文件。所以可能是硬编码的数据库连接参数,而不是从 parameters.yml 获取。您应该查看以下参数。特别是 userpassword 字段。如您所见,这里是硬编码的。未从 parameters.yml 文件中读取。

    doctrine:
    dbal:
        default_connection:   default
        types:
            # A collection of custom types
            # Example
            some_custom_type:
                class:                Acme\HelloBundle\MyCustomType
                commented:            true
        # If enabled all tables not prefixed with sf2_ will be ignored by the schema
        # tool. This is for custom tables which should not be altered automatically.
        #schema_filter:        ^sf2_
    
        connections:
            # A collection of different named connections (e.g. default, conn2, etc)
            default:
                dbname:               ~
                host:                 localhost
                port:                 ~
                user:                 root
                password:             ~
                charset:              ~
                path:                 ~
                memory:               ~
    

    【讨论】:

    • 远程服务器上一切正常,没有硬编码:( symfony 仍然显示连接错误
    • 想查看您服务器上的 config.yml、config_dev.yml、config_prod.yml 和 parameters.yml 文件,而不是本地文件。
    【解决方案3】:

    好的,我已清除缓存,一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 2015-04-12
      • 2011-01-22
      相关资源
      最近更新 更多