0

symfony 2.1クックブックのページに従って、PDOを使用してセッションデータを保存します。http://symfony.com/doc/master/cookbook/configuration/pdo_session_storage.html開発 マシンでは、すべてが正常に機能します。 ....また、devまたはprod環境のキャッシュをクリアしたが、本番マシン(ライブサーバー)でエラーが発生した場合:

 [PDOException]                                                                                   
SQLSTATE[HY000] [2002] Can't connect to local MySQL server 
through socket '/tmp/mysql.sock' (2) 

キャッシュをクリアするためにトリングするときphp app/console cache:clear --env=prod

そのため、config.ymlのコードは同じですが、ライブサーバーと開発マシンの間で何かが違うようです。

私はこれらの設定を使用していますservices:

 pdo:
   class: PDO
   arguments:
        - "mysql:dbname=%database_name%"
        - %database_user%
        - %database_password%

 session.handler.pdo:
     class:     Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
     arguments: [@pdo, %pdo.db_options%]

そして私がするとき私はls -la /tmp/mysql.sock 得る

ls: cannot access /tmp/mysql.sock: No such file or directory
4

1 に答える 1

1

これをmysqlの引数に追加します。

services:
pdo:
    class: PDO
    arguments:
        - "mysql:dbname=%database_name%;host=%database_host%"
        - %database_user%
        - %database_password%
    calls:
        - [setAttribute, [3, 2]] # \PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION
session.handler.pdo:
    class:     Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler
    arguments: ["@pdo", "%pdo.db_options%"]        

構成にデータベースホストはなく、PDOクラスの最初のパラメーター($ dsn)には、セミコロンで区切られた2つのパラメーターdbnameとdbhostがあります。お役に立てば幸いです。

于 2014-03-10T04:46:17.573 に答える