0

我按照 symfony 2.1 食谱页面使用 PDO 保存 sessing 数据,在此链接上:http ://symfony.com/doc/master/cookbook/configuration/pdo_session_storage.html 事情是,在我的开发机器上,一切正常....当我清除开发或生产环境的缓存但在我的生产机器(实时服务器)上我得到错误:

 [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) 有两个参数,由分号分隔,dbname 和 dbhost,希望对您有所帮助,加油!

于 2014-03-10T04:46:17.573 回答