Php Zend framework日志到数据库错误
我尝试使用以下代码将调用Paypal返回的PHP数据记录到数据库中Php Zend framework日志到数据库错误,php,zend-framework2,Php,Zend Framework2,我尝试使用以下代码将调用Paypal返回的PHP数据记录到数据库中 $db = new Zend\Db\Adapter\Adapter(array( 'driver' => $config->database->adapter, 'database' => $config->database->params->dbname, 'username' => $config->database->params->username, 'p
$db = new Zend\Db\Adapter\Adapter(array(
'driver' => $config->database->adapter,
'database' => $config->database->params->dbname,
'username' => $config->database->params->username,
'password' => $config->database->params->password
));
$paypalLog = array(
'transactionId' => 'transactionId',
'transactionType' => 'transactionType',
'paymentType' => 'paymentType',
'orderTime' => 'orderTime',
'currencyCode' => 'currencyCode',
'feeAmt' => 'feeAmt',
'taxAmt' => 'taxAmt',
'paymentStatus' => 'paymentStatus',
'pendingReason' => 'pendingReason',
'reasonCode' => 'reasonCode'
);
$writer = new Zend\Log\Writer\Db($db, 'paypal', $paypalLog);
$logger = new Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info($transactionId,
$transactionType,
$paymentType,
$orderTime,
$currencyCode,
$feeAmt,
$taxAmt,
$paymentStatus,
$pendingReason,
$reasonCode);
?>
我一直得到下面的错误
Fatal error: Uncaught exception 'Zend\Log\Exception\InvalidArgumentException' with message '$extra must be an array or implement Traversable' in C:\xampp\htdocs\app\library\Zend\Log\Logger.php:236 Stack trace: #0 C:\xampp\htdocs\app\library\Zend\Log\Logger.php(333): Zend\Log\Logger->log(6, '2SH18664DB63910...', 'expresscheckout') #1 C:\xampp\htdocs\app\public\orderconfirm.php(124): Zend\Log\Logger->info('2SH18664DB63910...', 'expresscheckout', 'instant', '2013-02-06T10:4...', 'AUD', '0.52', '0.00', 'Completed', 'None', 'None') #2 {main} thrown in C:\xampp\htdocs\app\library\Zend\Log\Logger.php on line 236
感谢您的帮助。您使用的记录器不正确 它接受两个参数:
/**
* @param string $message
* @param array|Traversable $extra
* @return Logger
*/
public function info($message, $extra = array())
{
return $this->log(self::INFO, $message, $extra);
}
您正在将$transactionType作为“额外”字段传递,该字段可能不是数组或可传输对象
尝试此操作,应将阵列转换为日志文件的字符串:
$logger->info(paypalLog);
// or convert it to a string before logging.. it
$logger->info(implode(',', $paypalLog));
我通过构造一个包含“额外”信息的数组并发送它来实现这一点
$data = array(
'transactionId' => $transactionId,
'transactionType' => $transactionType,
'paymentType' => $paymentType,
'orderTime' => $orderTime,
'amt' => $amt,
'currencyCode' => $currencyCode,
'feeAmt' => $feeAmt,
'taxAmt' => $taxAmt,
'paymentStatus' => $paymentStatus,
'pendingReason' => $pendingReason,
'reasonCode' => $reasonCode
);
$mapping = array(
'message' => 'message',
'extra' => $data);
$writer = new Zend\Log\Writer\Db($db, 'paypal', $paypalLog);
$logger = new Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info($mapping);