निम्न कोड सेगमेंटेशन गलती क्यों होती है?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) मैं दो अलग अलग दीप सर्वर पर इस कोड को भाग गया और वे दोनों मेरी error.log फाइलों में child pid somenumber exit signal Segmentation fault (11)
तरह त्रुटियों उत्पन्न करते हैं। एक सर्वर पर, मैं उबंटू 10.04, अपाचे 2, माइस्क्ल 5 और PHP 5.3.2-1ubuntu4.9 चला रहा हूं, और दूसरे सर्वर पर मैं उबंटू 11.10, अपाचे 2, माइस्क्ल 5 और PHP 5.3.6-13ubuntu3.3 चला रहा हूं ।
2) यह अजीब है, लेकिन जब मैं $d2 = new DAO();
या लाइन exit;
लाइन पर टिप्पणी करता हूं, तो सेगमेंटेशन गलती दूर हो जाती है।
3) विभाजन गलती चाहे किसी भी db तालिका मैं तैयार बयान
में से चयन क्या चल रहा है तब होता है? मैं बहुत निराश हूँ। इस सेगमेंटेशन गलती के कारण मैंने पूरे दिन के लायक समय खो दिए हैं। करें ... किसी को भी जानता है क्या हो रहा है, मुझे पता है
धन्यवाद
करने के लिए सबसे अच्छी बात पूरी तरह चतुर ड्रॉप करने के लिए है। यह अनावश्यक उपरि है। * "अरे, चलिए PHP के शीर्ष पर एक टेम्पलेटिंग इंजन जोड़ें, जो एक टेम्पलेटिंग इंजन है!" * ': राउलीज़:' – NullUserException
जो कोड आप ऊपर देख रहे हैं वह एक समस्या का एक आसुत संस्करण है जो 5 वर्ष में मौजूद है पुराना सॉफ्टवेयर तो मैं कोड के सैकड़ों पृष्ठों को फिर से लिखने के बिना वास्तव में smarty ड्रॉप नहीं कर सकता। – John
यह सिर्फ एक परीक्षण है, लेकिन कंसक्टर में, क्या आप पहले वैश्विक चर आयात कर सकते हैं और इसका उपयोग करने से पहले इसे स्थानीय में असाइन कर सकते हैं? शायद segfault दूर चला जाता है। यह सिर्फ एक विचार है, इसलिए कोई गारंटी नहीं है। – hakre