"घातक त्रुटि: क्लास 'MySQLi' नहीं मिला" को कैसे हल करें?


92

मैं एक ट्यूटोरियल कर रहा हूं और मुझे यह त्रुटि मिल रही है:

घातक त्रुटि: लाइन 8 पर क्लास (MySQLi) नहीं मिली (LONG URL)

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

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

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

इसके अलावा, मैं PHP संस्करण 5.2.5 चला रहा हूं


आप एक हस्तलिखित MYSQLi वर्ग का उपयोग कर सकते हैं , इसलिए आपको mysqli को स्थापित करने की आवश्यकता नहीं है। यदि आपके पास सर्वर नहीं है तो यह एकमात्र समाधान है।
चूजे

जवाबों:


83

लगता है जैसे आपको सिर्फ MySQLi को इंस्टॉल करना है

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


20
AWS पर, आप बसsudo yum install php-mysqli
bobobobo

मेरे लिए यह तय हो गया था: apt-get install php7.0-mysql। मैं रास्पियन स्ट्रेच 9 पर चल रहा हूं
नेग्रोटिको 1919

अमेज़ॅन लाइनक्स के साथ AWS पर, यह कुछ इस तरह होगा sudo yum install php56-mysqlnd.x86_64(जो आपके द्वारा स्थापित किए गए php के संस्करण से मेल खाता है)
शुभ

46

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

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

6
मैं अभी भी "हम mysqli नहीं है !!!" 'sudo apt-get install php5-mysqlnd' चलाने के बाद भी?
बैन_उज़र

मुझे वह 'मिल गया है, जो हमारे पास है, लेकिन मुझे वही त्रुटि मिलती रही है जो' मिस्क्ली 'को नहीं मिली है ... कोई विचार?
PA-GW

36

यदि आप उबंटू पर हैं , तो दौड़ें:

 sudo apt-get install php5-mysqlnd

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

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

यह पर्याप्त नहीं है। मुझे अभी भी php5-mysql पैकेज की कमी थी। sudo apt-get -y install php5-mysql php5-mysqlndदोनों प्राप्त करने के लिए उपयोग करें । क्या यह आपको याद आ रहा था, @ हर्मन इनजाल्डसन?
बालमपौर

यह कुछ कॉन्फ़िगरेशन त्रुटि थी। stackoverflow.com/questions/31535173/…
Fzs2

21

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

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

1
यह देखने वाली पहली बात होनी चाहिए।
जेम्स बेली

15

Uncommenting के अलावा php_mysqli.dll में विस्तार php.ini , यह भी टिप्पणी हटाएं extension_dir में निर्देश php.ini और अपने स्थान को निर्दिष्ट:

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

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


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

मेरे लिए यहाँ पर (विंडोज पर) "एक्सटेंशन_डिर" में एक्सटेंशन के लिए निरपेक्ष पथ में टाइप करना था।
TechNyquist


2

Mysqli को php.ini में कैसे इनेबल करें

  1. संपादित करें / हटाने के द्वारा टिप्पणी हटाएं ';' (कोलन) php.ini में निम्नलिखित config: 1 (टिप्पणी हटाएं और जोड़ने config): include_path = "C: \ php शामिल है \" 2 (टिप्पणी हटाएं): extension_dir = "ext" 3 (टिप्पणी हटाएं और विन्यास को संपादित करें): एक्सटेंशन = C: /PHP/ext/php_mysql.dll एक्सटेंशन = C: /PHP/ext/php_mysqli.dll
  2. IIS सर्वर को पुनरारंभ करें
  3. सुनिश्चित करें कि mysql सिस्टम पर चल रहा है।

Php.ini फ़ाइल को कैसे लोड करें

  1. फ़ाइल का कोई भी नाम Cp: \ PHP से php.ini-production / php.ini-development के लिए php.ini में बदलें: (ध्यान दें कि अब एक्स्टेंशन ini यानी "php.ini" होगा)।
  2. Php.ini फ़ाइल पुनरारंभ सर्वर का नाम बदलने के बाद
  3. Http: //localhost/phpinfo.php में परिवर्तन देखें

2

यदि आप डॉकर पर हैं ...

अंदर PHP- कंटेनर भागो:

#docker-php-ext-install mysqli

#apachectl restart

1
यह प्रश्न का उत्तर प्रदान नहीं करता है। किसी लेखक से स्पष्टीकरण मांगने या उसका अनुरोध करने के लिए, उनके पोस्ट के नीचे एक टिप्पणी छोड़ दें। - समीक्षा से
एरवान

@ इरावन, वास्तव में, करता है
आपका कॉमन सेंस

2

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

  • क्या आपने MySQLi को स्थापित किया है?
  • क्या आपने इसे php.ini में सक्रिय किया है?
  • फिर से शुरू किया अपाचे और / या PHP-FPM?

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


1

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

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

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


0

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

जेंटू पर, मैंने एक नया PHP स्थापित किया था (mysqli USE ध्वज सक्षम होने के साथ), लेकिन मुझे PHP के नए संस्करण को सक्रिय करने की आवश्यकता थी (क्योंकि पुराने को मिसकली याद आ रही होगी):

# 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

0

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

कुछ चरण मुझे मिले।

मैंने Ubuntu 14.04 पर PHP संस्करण 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.iniखोजने extension_dir

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

और अपाचे 2 को पुनः आरंभ करें: /ect/init.d/apache2 restart


0

PHP ज़िप में आमतौर पर उपयोग की जाने वाली अधिकांश एक्सटेंशन (*। Dll जैसे विंडोज़ पर php_mysqli.dll) के अंतर्गत \ ext डायरेक्टरी शामिल हैं, हालाँकि वे डिफ़ॉल्ट रूप से सक्षम नहीं हैं। MySQLi का उपयोग करने का प्रयास करते समय आपको यह घातक त्रुटि हो सकती है:

( ! ) Fatal error: Uncaught Error: Class 'mysqli' not found in C:\myProject\ class.Database.php on line 24

एक्सटेंशन सक्षम करने के लिए, php.ini खोलें (आपको php.ini-development को php.ini के रूप में कॉपी करना होगा), और इन दोनों लाइनों को अन-कमेंट (या एड) करें:

extension_dir = "ext"

और किसी भी विशेष एक्सटेंशन के लिए आपको घातक परिणाम मिल रहे हैं, यानी mysqli के लिए:

extension=mysqli




0

Docker का उपयोग करने वाले किसी भी व्यक्ति के लिए, मैं इस समस्या में भाग गया, और php के बजाय अपने स्वयं के Dockerfile का उपयोग करके इसे हल किया: pm छवि:

FROM php:fpm

RUN docker-php-ext-install mysqli

0

मुझे एक लंबी विश्लेषण प्रक्रिया के बाद इस समस्या का हल मिला। कमांड लाइन फीचर्स के साथ मेरे php इंस्टालेशन का ठीक से परीक्षण करने के बाद मुझे पता चला कि php अच्छी तरह से काम कर रहा है और mysql डेटाबेस के साथ काम कर सकता है। Btw। आप कमांड php -f filename.php के साथ php कोड के साथ कोड-फाइलें चला सकते हैं
, तो मुझे एहसास हुआ, यह अपाचे के साथ कुछ गलत होना चाहिए।
मैंने अंदर केवल phpinfo () फ़ंक्शन के साथ एक फ़ाइल बनाई।
यहां मैंने देखा, कि
लोड की गई कॉन्फ़िगरेशन फ़ाइल में
मेरी कॉन्फ़िगरेशन फ़ाइल लोड नहीं हुई थी, इसके बजाय वहाँ उल्लेख किया गया था (कोई नहीं)।

अंत में मुझे अपाचे कॉन्फ़िगरेशन के भीतर प्रविष्टि मिली

<IfModule php5_module>
    PHPINIDir "C:/xampp/php"
</IfModule>

लेकिन मैंने PHP 7 स्थापित किया है और इसलिए Apache php.ini फ़ाइल को लोड नहीं कर सका क्योंकि उसके लिए कोई प्रविष्टि नहीं थी। मैंने कहा

<IfModule php7_module>
    PHPINIDir "C:/xampp/php"
</IfModule>

और अपाचे को पुनः आरंभ करने के बाद सभी अच्छी तरह से काम करते हैं।

ये कोड ऊपर मैंने अपनी httpd-xampp.conf फ़ाइल में पाया। यह आपके कॉन्फ़िगरेशन पर कहीं और हो सकता है।
उसी फ़ाइल में मैंने php 7 संस्करण के प्रतिस्थापन के रूप में php 7 के लिए सेटिंग्स से पहले बदल दिया था।

#
# PHP-Module setup
#
#LoadFile "C:/xampp/php/php5ts.dll"
#LoadModule php5_module "C:/xampp/php/php5apache2_4.dll"
LoadFile "C:/xampp/php/php7ts.dll"
LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"

जैसा कि आप देख सकते हैं कि मेरे पास xampp पैकेज स्थापित है लेकिन यह समस्या अपाचे की तरफ थी।



0

मैं xampp का उपयोग कर रहा हूं और नाम बदलने के बाद मेरी समस्या ठीक हो गई थी:

extension_dir = "ext"

सेवा

extension_dir = "C:\xampp\php\ext"

पुनश्च: यह परिवर्तन करने के बाद अपाचे को पुनः आरंभ करना न भूलें!


-1
<?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());
            }
        }
    }
?>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.