以下代码正在创建我的apache Web服务器。当我从parse_service_rows()
删除数据库查询时,apache不会崩溃。
我还试图在没有帮助的情况下从查询中删除WHERE子句。
我的代码如下所示:
public function tab($tab_name = '') {
/*
* CODE TO GET ROWS
*/
$service['rows'] = array_map(array($this, 'parse_service_rows'), $service['rows']);
}
private function parse_service_rows($row) {
// This query causes apache to crash
$order = $this->db->get_where('services', array(
'service_user_id' => $this->user->get('user_id'),
'service_firm_id' => $this->firm->id,
'service_type' => $row['type'],
'service_object_id' => $row['object_id']
), 1)->row_array();
return $row;
}
但是,当我尝试使用foreach
代替array_map
时,它有效:
foreach ($service['rows'] as $key => $row) {
$service['rows'][$key] = $this->parse_service_rows($row);
}
Windows错误窗口提供了以下信息:
Problem Event Name: APPCRASH
Application Name: httpd.exe
Application Version: 2.4.2.0
Application Timestamp: 4fafa3e6
Fault Module Name: php5ts.dll
Fault Module Version: 5.4.4.0
Fault Module Timestamp: 4fd8f85c
Exception Code: c0000005
Exception Offset: 000713cd
OS Version: 6.1.7600.2.0.0.256.1
Locale ID: 1061
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
为什么会这样?
答案 0 :(得分:1)
您应该检查IIS PHP错误日志,您应该能够通过PHP配置中的IIS管理员找到它并从那里读取它。
确保您的PHP日志级别至少为E_ALL并且error_reporting已打开,如果这是一个开发服务器,您可能也应该有display_errors。这些都是PHP.ini中的所有选项,您也可以从IIS管理控制台进行编辑。
如果没有帮助,这里有一些你应该看看的地方;
答案 1 :(得分:0)
@Kristian你有没有尝试在tab()之前声明parse_service_rows()?我记得在某个地方读过,如果在调用函数之后声明了回调函数,那么使用回调可能会出现问题。