2009-07-18 55 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文件夾。