2009-07-18 56 views
0

我的应用程序正在从网页的一面开始工作。Zend CLI不能正常工作

我想获得的CLI的工作,这样我可以运行单元测试和这样

这里就是我有一个测试脚本:

$pthRoot = dirname(__FILE__); 
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/..')); 
define('APPLICATION_ENV', 'development'); 
define('SERVER_ROLE', 'development'); 

set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library') . PATH_SEPARATOR . realpath($pthRoot . '/../controllers') 
    . PATH_SEPARATOR . get_include_path() 
))); 
date_default_timezone_set('America/Toronto'); 

require_once('Zend/Loader/Autoloader.php'); 
$autoloader = Zend_Loader_Autoloader::getInstance(); 

require '../bootstrap.php'; 

require_once 'Zend/Application.php'; 
$application = new Zend_Application(
    APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/application.ini' 
); 
$_SERVER['SERVER_ROLE'] = 'development'; 
$bootstrap = $application->getBootstrap(); 
$bootstrap->runScript(); 

$db = Zend_Registry::get('db'); 
$sql = "select * from settings"; 
print_r($db->fetchAll($sql)); 

不幸的是,我得到一个错误get('db')行。

PHP致命错误:未捕获的异常“Zend_Db_Adapter_Exception”与消息“MySQL驱动当前未安装”

根据来自命令行的phpinfo,MySQL驱动正在运行。我错过了什么?

在此先感谢。

回答

1

如果您正在使用与Zend框架MySQL的适配器,你有两种可能(我引述the doc):

  • 的MySQL,使用PDO_MYSQL PHP扩展
  • 的MySQL,使用的mysqli PHP扩展

你试图使用哪一个?

如果是第一个,是否为CLI激活了扩展pdo_mysql? (您可以使用“php -m”获取加载的扩展名列表)

如果是第二个,是否为CLI激活了扩展mysqli?

看来这两个适配器都没有使用扩展名mysql(这是相当古老的);所以,如果这个出现,它可能不是真正相关的。

随着一点点运气,它只会是“正确的扩展名”装入用于Web php.ini文件,而不是在使用CLI的一个...

+0

它使用pdo_mysql。我没有得到的是,我在两种情况下都使用了相同的配置文件,所以不应该使用与加载相同的扩展名吗? – jeffkolez 2009-07-19 12:50:06

0

运行时Zend服务器,你要采购/etc/zce.rc获得PHP CLI的工作,如果命令是不是在您的个人资料:

$ . /etc/zce.rc

1

您可以将pdo_mysql.so extention Zend服务器复制到你php-cli扩展文件夹和文件pdo_mysql.ini Zend服务器来的php-cli的INI文件夹。