Ibm cloud 在Windows上使用WAMP和PHP7连接DashDB

Ibm cloud 在Windows上使用WAMP和PHP7连接DashDB,ibm-cloud,dashdb,Ibm Cloud,Dashdb,我有一个用Zend Framework构建的网站,由Wamp32和PHP7在Windows10上运行,连接到MySQL数据库 我现在正在尝试向DashDB添加连接 我已经下载了PECL文件,将它们安装在PHP7的ext目录中,并将它们添加到PHP.ini文件中,我可以在WAMP的extensions菜单中看到PHP_ibm_db2和PHP_pdo_ibm 在我的global.php文件中,我有以下内容: $database = "BLUDB"; $user = "dashdb_user"; $p

我有一个用Zend Framework构建的网站,由Wamp32和PHP7在Windows10上运行,连接到MySQL数据库

我现在正在尝试向DashDB添加连接

我已经下载了PECL文件,将它们安装在PHP7的ext目录中,并将它们添加到PHP.ini文件中,我可以在WAMP的extensions菜单中看到PHP_ibm_db2PHP_pdo_ibm

在我的global.php文件中,我有以下内容:

$database = "BLUDB";
$user = "dashdb_user";
$password = "dashdb_passwd";
$hostname = "dashdb_host";
$port = 50000;

return array(
    'db' => array(
        'driver'         => 'Pdo',
        'dsn'            => 'mysql:dbname=mysql_db;host=localhost',
        'driver_options' => array(
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
        ),
        'adapters'=>array(
            'db2' => array(
                'driver'         => 'IbmDb2',
                'database' => "DRIVER = { IBM DB2 ODBC DRIVER }; DATABASE = $database; HOSTNAME=$hostname; PORT = $port; PROTOCOL = TCPIP ; UID = $user ; PWD = $password;",
            ),
        )
    ),
我还将凭证添加到local.php文件中的DashDB中

return array(
    'db' => array(
        // for primary db adapter that called
        // by $sm->get('Zend\Db\Adapter\Adapter')
        'username' => 'mysql_username',
        'password' => mysql_passwd',

        // to allow other adapter to be called by
        // $sm->get('db1') based on the adapters config.
        'adapters' => array(
            'db2' => array(
                'username' => 'dashdb_user',
                'password' => 'dashdb_passwd',
            ),
        ),
    ),
);
最后在Module.php文件中,我有:

public function onBootstrap(MvcEvent $e)
{
    $eventManager        = $e->getApplication()->getEventManager();
    $moduleRouteListener = new ModuleRouteListener();
    $moduleRouteListener->attach($eventManager);

    $sm = $e->getApplication()->getServiceManager();
    $sm->get('db2');
}
但当我尝试加载网站时,会出现以下错误:

( ! ) Fatal error: Uncaught Zend\Db\Adapter\Exception\RuntimeException: The ibm_db2 extension is required by this driver. in F:\wamp\www\playdon_website\vendor\zendframework\zend-servicemanager\src\ServiceManager.php on line 1130
( ! ) Zend\ServiceManager\Exception\ServiceNotCreatedException: An abstract factory could not create an instance of db2(alias: db2). in F:\wamp\www\playdon_website\vendor\zendframework\zend-servicemanager\src\ServiceManager.php on line 1130
Call Stack
#   Time    Memory  Function    Location
1   0.0303  357304  {main}( )   ...\index.php:0
2   0.5798  867056  Zend\Mvc\Application::init( )   ...\index.php:17
3   3.4846  3664936 Zend\Mvc\Application->bootstrap( )  ...\Application.php:281
4   3.8506  4129480 Zend\EventManager\EventManager->triggerEvent( ) ...\Application.php:169
5   3.8506  4129480 Zend\EventManager\EventManager->triggerListeners( ) ...\EventManager.php:251
6   4.3917  4660464 call_user_func:{F:\wamp\www\playdon_website\vendor\zendframework\zend-eventmanager\src\EventManager.php:490} ( )    ...\EventManager.php:490
7   4.3917  4660464 Application\Module->onBootstrap( )  ...\EventManager.php:490
8   4.4072  4670080 Zend\ServiceManager\ServiceManager->get( )  ...\Module.php:33
9   4.4073  4670600 Zend\ServiceManager\ServiceManager->create( )   ...\ServiceManager.php:530
10  4.4073  4670600 Zend\ServiceManager\ServiceManager->doCreate( ) ...\ServiceManager.php:597
11  4.4073  4670600 Zend\ServiceManager\ServiceManager->createFromAbstractFactory( )

您是在Windows还是Bluemix上运行PHP?您的问题被标记为Bluemix,但我想知道您是否在本地运行PHP并仅连接到Bluemix中的dashDB服务。我的PHP在Windows 10操作系统上本地运行。可能Bluemix标记在这里错了?我添加了dashDB标记,您是从Bluemix运行dashDB吗?无论如何,我认为这在这里并不重要,但IBMBlueMix标签一开始肯定让人困惑。您的问题看起来只与dashDB相关。很明显,正如错误消息所示,您需要DB2驱动程序。您是在Windows还是Bluemix上运行PHP?您的问题被标记为Bluemix,但我想知道您是否在本地运行PHP并仅连接到Bluemix中的dashDB服务。我的PHP在Windows 10操作系统上本地运行。可能Bluemix标记在这里错了?我添加了dashDB标记,您是从Bluemix运行dashDB吗?无论如何,我认为这在这里并不重要,但IBMBlueMix标签一开始肯定让人困惑。您的问题看起来只与dashDB相关,显然,您需要DB2驱动程序,正如错误消息所示。