在我的基于ZF2 CE的ZendServer项目中,在global.php文件中有以下内容:
return array(
'db'=> array(
'driver' => 'Pdo',
'dns' => 'mysql:dbname=test; host=localhost',
'username' => '***',
'password' => '***',
'driver_options' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
),
),
'service_manager' => array(
'factories' => array(
'Zend\Db\Adapter\Adapter' =>
'Zend\Db\Adapter\AdapterServiceFactory',
),
),
);但是,当我尝试使用db连接时,会出现以下错误:
Zend\Db\Adapter\Exception\RuntimeException文件:
/var/www/ProvaProgetto/vendor/zendframework/zendframework/library/Zend/Db/Adapter/Driver/Pdo/Connection.php:289消息:
Connect Error: could not find driver我试着检查php -m | grep -i pdo是否启用了pdo扩展,它是否返回
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/mysql.so' - /usr/lib/php5/20090626/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/mysqli.so' - /usr/lib/php5/20090626/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/pdo_mysql.so' - /usr/lib/php5/20090626/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0 PDO
我该如何解决这个问题?
发布于 2014-03-19 11:46:20
问题与您的环境/配置有关,而不是Zend。您必须首先正确安装和配置mysqli/pdo扩展插件才能使用它们。
实际上,您的php -m | grep -i pdo命令显式地说明了问题;无法加载该扩展。
检查您的php.ini,重新安装这些扩展(如果需要)和/或确保您在php.ini中启用了它们,重新启动您的web服务器。
如果我没有错,Zend应该提供一个GUI界面来配置/启用/禁用扩展。(我从未使用过ZS,但问题很清楚)
发布于 2015-01-19 14:29:01
‘=> 'mysql:dbname=test;host=localhost’
您的问题是'dns',应该是:'dsn‘。
发布于 2014-03-18 19:51:20
尝试重新安排您的db凭证。将它们放入local.php而不是global.php中(除非每个环境的凭据相同),然后数组应该如下所示
local.php
'db' => array
(
'adapters' => array
(
'test-db' => array
(
'driver' => 'pdo',
'dsn' => 'mysql:dbname=test; host=localhost',
'username' => '**********',
'password' => '**********',
'driver_options' => array
(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
),
)
),在您的Module.php添加
use Zend\Db\ResultSet\ResultSet;
use Zend\Db\TableGateway\TableGateway;
public function getServiceConfig()
{
return array
(
'factories' => array
(
'Application\Mapper\TestTable' => function($sm)
{
$tableGateway = $sm->get('TestTableGateway');
$table = new TestTable($tableGateway);
return $table;
},
'TestTableGateway' => function($sm)
{
$dbAdapter = $sm->get('test-db');
$resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new Test());
return new TableGateway('actualTableName', $dbAdapter, null, $resultSetPrototype);
},
),
);返回到全局,将service_manager数组更改为:
'service_manager' => array
(
'abstract_factories' => array
(
'Zend\Db\Adapter\AdapterAbstractServiceFactory',
),
'factories' => array
(
),
),https://stackoverflow.com/questions/22488933
复制相似问题