1

エラー:(製品環境で発生)

request.CRITICAL: PDOException: SQLSTATE[28000] [1045] /srv/inta/current/vendor/doctrine-dbal/lib/ で、ユーザー 'root'@'localhost' (パスワードを使用: YES) のアクセスが拒否されました (キャッチされない例外) Doctrine/DBAL/Driver/PDOConnection.php 36行目 [] []

これまでに試したこと

奇妙なことに、root ユーザーと提供されたパスワードを使用して実際にアクセスできます。コンソール経由で root としてログインするとうまくいきます。

app/config/にある次のparameters.ymlファイルを使用しています

parameters:
    database_driver:   pdo_mysql
    database_host:     localhost
    database_port:     ~
    database_name:     int_apartments
    database_user:     root
    database_password: pw goes here

    mailer_transport:  smtp
    mailer_host:       localhost
    mailer_user:       ~
    mailer_password:   ~

    locale:            en
    secret:            ThisTokenIsNotSoSecretChangeIt

ご覧のとおり、データベースの名前、ユーザー、パスワードのみが変更された非常に標準的なものです。

app/configにあるconfig.yml内(関連部分)

imports:
- { resource: security.yml }
- { resource: parameters.yml }

...

doctrine:
   dbal:
      driver:   %database_driver%
      host:     %database_host%
      port:     %database_port%
      dbname:   %database_name%
      user:     %database_user%
      password: %database_password%
      charset:  UTF8
      dbname:   int_apartments

  orm:
      auto_generate_proxy_classes: %kernel.debug%
      auto_mapping: true
      mappings:
          StofDoctrineExtensionsBundle: false

ここで、「ステップ 1」から始めて、parameters.yml ファイルが実際にインポートされていることを確認したかったので、ホストを「localhos」またはユーザーを「tom」などに変更し、app/にあるエラー メッセージを確認しました。 logs/prod.logはそのままで、場所もユーザーも変わりません。

だから私はapp/configにあるconfig_prod.ymlをチェックしました

imports:
- { resource: config.yml }


#doctrine:
#    metadata_cache_driver: apc
#    result_cache_driver: apc
#    query_cache_driver: apc

monolog:
    handlers:
        main:
            type:         fingers_crossed
            action_level: error
            handler:      nested
        nested:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: debug

...そして、すべてが標準のようです!

何が起こっているかの要約

というわけでクイック版はこちら。

  • root@localhost の認証エラーが存在します
  • コンソールからそのユーザーとしてログインして、認証クレジットを確認しました
  • parameters.yml ファイルが読み込まれているかどうかを確認したい
  • 一部の値を変更 - エラー メッセージに影響するものはありませんでした

(小)編集: 私が実際にやりたいことは、別のパスワードを持つまったく別のユーザーとしてDBに接続することです。parameters.yml ファイルに別の資格情報を入力しても、doctrine は「root@localhost」エラーを吐き出します。

アイデア?

4

2 に答える 2

2

ばかげた間違いです。サーバー上のユーザー/グループ/所有者の構成が悪いためです。

app/cache ディレクトリは「root」が所有していますが、app/console cache:clear --env=prod --no-debug を実行すると、(root ではなく) 別のユーザーとして実行されます。そのため、キャッシュのクリアに問題があり、doctrine はキャッシュ ファイルにある非常に古い構成を使用していたようです。

学んだ教訓:

  • 常に root として実行してみてください (最後の手段として)
  • 所有権の問題を回避するために、適切に構成された Web サーバーを使用する
于 2012-07-15T12:31:52.960 に答える
1

システムが何らかの理由でフォルダーを削除できなかったため、prod_old にアップロードした prod フォルダーの名前を変更することで問題を解決しました。

于 2015-11-05T20:56:09.937 に答える