爲什麼下面的代碼會導致分段錯誤?PHP中的分段錯誤?
<?php
$CNX = new mysqli('localhost','dbuser', 'dbpass', 'dbtest');
class DAO
{
var $stmt;
function DAO()
{
$this->stmt = $GLOBALS['CNX']->stmt_init();
}
function listing()
{
$this->stmt->prepare('SELECT * FROM any_table');
}
}
class Page
{
function go()
{
$d1 = new DAO();
$d2 = new DAO();
$d1->listing();
exit;
}
}
$tpl = new Page();
$tpl->go();
?>
其他注意事項
1)我跑在兩個不同的LAMP服務器的代碼,他們都產生就像在我的error.log文件child pid somenumber exit signal Segmentation fault (11)
錯誤。在一臺服務器上,我運行Ubuntu 10.04,Apache 2,Mysql 5和PHP 5.3.2-1ubuntu4.9,並在另一臺服務器上運行Ubuntu 11.10,Apache 2,MySQL 5和PHP 5.3.6-13ubuntu3.3 。
2)這很奇怪,但是當我註釋掉行$d2 = new DAO();
或行exit;
時,分段錯誤消失。
3)段故障發生時,不管發生了什麼事我從準備好的聲明
選擇哪個db表?我很沮喪。由於這種分段錯誤,我失去了整整一天的時間。請...如果有人知道發生了什麼事,讓我知道
感謝
做的最好的事情是完全放棄智者。這是不必要的開銷。 *「嘿,讓我們在PHP之上添加一個模板引擎,這是一個模板引擎本身!」*`:rolleyes:` – NullUserException 2011-12-17 02:48:00
您在上面看到的代碼僅僅是5年中存在的問題的蒸餾版本舊的軟件。因此,如果不重寫數百頁的代碼,我就不能真正放棄。 – John 2011-12-17 02:51:33