Dlaczego następujący kod powoduje błąd segmentacji?Błąd segmentacji w 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();
?>
Uwagi dodatkowe
1) Pobiegłem ten kod na dwóch różnych serwerach LAMP i obaj generować błędy jak child pid somenumber exit signal Segmentation fault (11)
w moim error.log plików. Na jednym serwerze korzystam z Ubuntu 10.04, Apache 2, Mysql 5 i PHP 5.3.2-1ubuntu4.9, a na innym serwerze mam Ubuntu 11.10, Apache 2, mysql 5 i PHP 5.3.6-13ubuntu3.3 .
2) To dziwne, ale kiedy komentuję linię $d2 = new DAO();
lub linię exit;
, błąd segmentacji znika.
3) Usterka segmentacji występuje bez względu na które db tabela I wybierać spośród w przygotowanym oświadczeniu
Co się dzieje? Jestem tak sfrustrowany. Straciłem cały dzień z powodu tego błędu segmentacji. Proszę ... jeśli ktoś wie co się dzieje, daj mi znać
Dzięki
Najlepszą rzeczą do zrobienia jest spadek smarty całkowicie. To niepotrzebne obciążenie. * "Hej, dodajmy silnik szablonowy na PHP, który jest samym silnikiem szablonowym!" * ': Rolleyes:' – NullUserException
Powyższy kod jest po prostu destylowaną wersją problemu, który istnieje w ciągu 5 lat stare oprogramowanie. Więc nie mogę upuścić smarty bez przepisywania setek stron kodu. – John
To tylko test, ale w konduktorze, czy najpierw można zaimportować zmienną globalną i przypisać ją do lokalnej przed jej użyciem? Może segfault zniknie. To tylko pomysł, więc nie ma gwarancji. – hakre