2009-03-20 20 views
62

मैं एक ट्यूटोरियल कर रहा हूँ और इस त्रुटि हो रही है:गंभीर त्रुटि: क्लास 'MySQLi' नहीं मिला

Fatal error: Class 'MySQLi' not found (LONG URL) on line 8

लाइन 8 पर कोड है:

$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error()); 

मैं ऑनलाइन किसी को देखा करने के लिए कहा देखें कि यह मेरे phpinfo() में चालू है या नहीं, लेकिन "mysqli" के लिए वहां कुछ भी सूचीबद्ध नहीं था।

इसके अलावा, मैं PHP संस्करण चला रहा हूँ की तरह तुम सिर्फ install MySQLi की जरूरत 5.2.5

+0

संबंधित: http://stackoverflow.com/questions/19305919/php-mysqli-works-in-command-line-but-not-on-pages –

उत्तर

62

लग रहा है।

यदि आपको लगता है कि आपने ऐसा किया है और अभी भी कोई समस्या है, तो कृपया अपने ऑपरेटिंग सिस्टम और कुछ भी मदद कर सकते हैं जो मदद कर सकता है।

+9

एडब्ल्यूएस पर, आप बस ['sudo yum install php- mysqli'] (http://stackoverflow.com/a/23713997/111307) – bobobobo

2

आपकी स्थापना के साथ समस्या की तरह लगता है।

  • क्या आपने MySQLi स्थापित किया है?
  • क्या आपने इसे php.ini में सक्रिय किया है?

http://www.php.net/manual/en/mysqli.installation.php

41

आप देख सकते हैं mysqli पुस्तकालयों के लिए इस कोड को क्रियान्वित करते हुए मौजूद हैं:

if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) { 
    echo 'We don\'t have mysqli!!!'; 
} else { 
    echo 'Phew we have it!'; 
} 
+4

मुझे अभी भी मिलता है "हमारे पास mysqli नहीं है !!!" 'sudo apt- चलाने के बाद भी php5-mysqlnd' स्थापित करें? –

8

इसके अलावा php.ini में php_mysqli.dll विस्तार uncommenting को, extension_dirphp.ini में निर्देश और आपके स्थान को निर्दिष्ट करें:

extension_dir = "C:\software\php\dist\ext" 

इससे यह मेरे लिए काम करता है।

+0

शानदार, बहुत बहुत धन्यवाद – SobiborTreblinka

+0

यह मेरे लिए काम करता था लेकिन '।/Ext' के साथ जो सापेक्ष पथ है। और मुझे 'php.ini-development' को 'php.ini' में बदलना था और उस फ़ाइल' एक्सटेंशन = php_mysqli.dll' में अपूर्णता थी। ओह लड़का, मैंने तुम्हें याद नहीं किया PHP। – Overdrivr

1

आप a handwritten MYSQLi class का उपयोग कर सकते हैं, इसलिए आपको mysqli इंस्टॉल करने की आवश्यकता नहीं है। यदि आपके पास सर्वर का स्वामित्व नहीं है तो यह एकमात्र समाधान है।

0

कुछ वितरण (जैसे Gentoo) PHP के एकाधिक इंस्टॉलेशन का समर्थन करते हैं, और आपको यह सुनिश्चित करना होगा कि आप माइस्क्ली स्थापित और सक्षम के साथ एक का उपयोग कर रहे हैं।

Gentoo पर, मैं एक नया पीएचपी (mysqli उपयोग ध्वज सक्षम के साथ) स्थापित किया था, लेकिन मैं (के बाद से पुराने एक होना चाहिए लापता mysqli) पीएचपी के नए संस्करण को सक्रिय करने की जरूरत:

# eselect php list apache2 
    [1] php5.3 * 
    [2] php5.5 
# eselect php set apache2 2 
You have to run `/etc/init.d/apache2 restart' for the changes to take effect 
# /etc/init.d/apache2 restart 
33

आप Ubuntu पर हैं, तो चलाएँ:

sudo apt-get install php5-mysqlnd 
+4

और इसके बाद अपाचे को पुनरारंभ करना न भूलें! – fracz

+0

@fracz अपाचे को पुनरारंभ करना वह हिस्सा है जिसे मैं भूल गया था। मैंने केवल MySQL को पुनरारंभ किया। धन्यवाद। – James

+0

मैंने भाग लिया। त्रुटि बनी हुई है। –

4

मेरे OSUbuntu है। मैं का उपयोग कर इस समस्या का समाधान:

sudo apt-get install php5-mysql 
0
<?php /* If the error is due to calling mysqli in a class */ 

    class dbconnect extends mysqli{ 

     private $host = 'localhost'; 
     private $user = 'root'; 
     private $pass = ''; 
     private $db = 'test'; 

     public function __construct() { 
      parent::__construct($this->host, $this->user, $this->pass, $this->db); 

      if (mysqli_connect_error()) { 
       die('Connect Error (' . mysqli_connect_errno() . ') ' . 
        mysqli_connect_error()); 
      } 
     } 
    } 
?> 
10

आप एक वर्ग है कि namespaced है के भीतर से "नए mysqli (..)" कहते हैं, तो आप एक ऐसी ही त्रुटि Fatal error: Class 'foo\bar\mysqli' not found in देख सकते हैं।जिस तरह से इसे ठीक करने के स्पष्ट रूप से ऐसा तरह जड़ नाम स्थान के लिए सेट करने के लिए एक पूर्ववर्ती बैकस्लैश के साथ है:

<?php 
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name) or die(mysqli_error()); 
0

यह मेरे लिए प्रारंभिक 'नहीं मिला' त्रुटि को हल किया। बैकस्लैश पर ध्यान दें, अब एक सपने की तरह काम करता है। नामस्थान का उपयोग करते समय केवल जरूरी है लेकिन आजकल कौन नहीं है?

$ mysqli = new \ MySQLi ($ db_server, $ db_user, $ db_pass, $ db_name) या मर (mysqli_error());

0

मैं सब से ऊपर की जाँच की और यह मेरे लिए काम नहीं किया,

कुछ कदम मैंने पाया हैं।

मैं Ubuntu 14.04 पीएचपी संस्करण 5.5.9-1ubuntu4.17 इस्तेमाल किया पर सबसे पहले

फ़ोल्डर

#ls /etc/php5/mods-available/ 
json.ini mcrypt.ini mysqli.ini mysql.ini mysqlnd.ini opcache.ini pdo.ini pdo_mysql.ini readline.ini xcache.ini 

जाँच यह mysqli.ini को शामिल नहीं किया है, तो अन्य पढ़ इसे स्थापित करने के लिए उत्तर,

ओपन php.iniextension_dir

मेरे मामले में, मैं सेट करना होगा extension_dir = /usr/lib/php5/20121212

और apache2 पुनः आरंभ: /ect/init.d/apache2 restart

0

मैंने सोचा कि मैं Namesco सर्वर का उपयोग कर एक ही समस्या के साथ किसी को भी मदद कर सकता है। मैं अपने स्थानीय सर्वर से डेटाबेस पीसी पर नामको पर डेटाबेस ले जाने के बाद इस समस्या को ठीक करने का प्रयास कर रहा हूं। वे सहायता नहीं करेंगे उन्होंने कहा कि यह एक कोडिंग मुद्दा था।

  • हालांकि, उनके CPANEL LINUX होस्टिंग इंटरफ़ेस से ठीक करना आसान था।
  • PHP पर क्लिक करें।
  • फिर PHP मॉड्यूल पर क्लिक करें और पूर्वस्थापित मॉड्यूल की सूची से बस mysqli के लिए बॉक्स पर क्लिक करें।
  • फिर सहेजें पर क्लिक करें। (कोड को बदलने की जरूरत नहीं है अगर यह किसी अन्य सर्वर पर काम करता है।)

दुर्भाग्यवश, उनके समर्थन लेख समय की बर्बादी थीं। इसे पढ़ने के बाद मैं एक नए दृढ़ संकल्प के साथ व्यवस्थापक इंटरफ़ेस गया।

धन्यवाद, सबको।

संबंधित मुद्दे