"মারাত্মক ত্রুটি: ক্লাস 'মাইএসকিউলি' পাওয়া যায় নি" কীভাবে সমাধান করবেন?


95

আমি একটি টিউটোরিয়াল করছি এবং এই ত্রুটিটি পাচ্ছি:

মারাত্মক ত্রুটি: ৮ ম লাইনে ক্লাস 'মাইএসকিউএলই' পাওয়া যায় নি (দীর্ঘ URL)

8 লাইনের কোডটি হল:

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

আমি অনলাইনে দেখেছি যে কেউ আমার phpinfo () এ এটি চালু আছে কিনা তা দেখতে বলেছিল, তবে "মাইসকিলি" এর অধীনে সেখানে কোনও তালিকাভুক্ত ছিল না।

এছাড়াও, আমি পিএইচপি সংস্করণ 5.2.5 চালাচ্ছি


আপনি একটি হস্তাক্ষর MYSQLi বর্গ ব্যবহার করতে পারেন , তাই আপনাকে mysqli ইনস্টল করার প্রয়োজন হবে না। আপনি যদি সার্ভারের মালিক না হন তবে এটিই একমাত্র সমাধান।
মুরগি

সম্পর্কিত: stackoverflow.com/questions/19305919/...
Fzs2

আপনি পিএইচপি ঝড় থেকে আসে তাহলে -> intellij-support.jetbrains.com/hc/en-us/community/posts/... বা web.archive.org/web/20200805054537/https://...
SNR

উত্তর:


86

আপনার মতো মনে হচ্ছে কেবল মাইএসকিউএলই ইনস্টল করা দরকার

আপনি যদি মনে করেন যে আপনি এটি করেছেন এবং এখনও কোনও সমস্যা রয়েছে, দয়া করে আপনার অপারেটিং সিস্টেম এবং অন্য কোনও কিছু পোস্ট করুন যা এটি আরও নির্ণয়ে সহায়তা করতে পারে।



আমার জন্য এটি ঠিক করা হয়েছিল: apt-get install php7.0-mysql। আমি
রাস্পবিয়ান

অ্যামাজন লিনাক্স সহ এডাব্লুএস-তে এটি এমন কিছু হবে sudo yum install php56-mysqlnd.x86_64(আপনি যে পিএইচপি-র কোনও সংস্করণ ইনস্টল করেছেন তার সাথে মিলে
শুভ 99

47

এই কোডটি কার্যকর করে mysqli গ্রন্থাগারগুলি উপস্থিত কিনা তা আপনি পরীক্ষা করতে পারেন:

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

6
আমি এখনও পেয়েছি "আমাদের কাছে মাইসকিলি নেই !!!" এমনকি `sudo অ্যাপ্লিকেশন- php5-mysqlnd` ইনস্টল করার পরেও?
নিষিদ্ধ_ ব্যবহারকারী

আমি পেয়েছি 'ফেইও আমরা পেয়েছি তবে ক্লাস' এমএসকিলি 'তে পাওয়া যায় না এমনই ত্রুটি আমি পাচ্ছি ... কোনও ধারণা?
PA-GW

38

আপনি যদি উবুন্টুতে থাকেন তবে চালান:

 sudo apt-get install php-mysqlnd

4
এবং এটির পরে অ্যাপাচি পুনরায় চালু করতে ভুলবেন না!
fracz

@ ফ্রেজ পুনরায় আরম্ভ করার অংশটি আমি ভুলে গিয়েছিলাম। আমি কেবল মাইএসকিউএল পুনরায় চালু করেছি। ধন্যবাদ
জেমস

এই যথেষ্ট নয়. আমি এখনও php5-mysql প্যাকেজ অভাব ছিল। sudo apt-get -y install php5-mysql php5-mysqlndউভয় পেতে ব্যবহার করুন । আপনি কি অনুপস্থিত ছিলেন, @ হারমান ইনজালডসন?
বাল্মীপুর

এটি কিছু কনফিগারেশন ত্রুটি ছিল। stackoverflow.com/questions/31535173/...
Fzs2

22

আপনি যদি নাম শ্রেণীর একটি ক্লাসের মধ্যে থেকে "নতুন মাইসকিলি (..)" কল করছেন, আপনিও অনুরূপ ত্রুটি দেখতে পাচ্ছেন Fatal error: Class 'foo\bar\mysqli' not found in। এটির সমাধানের উপায়টি পূর্ববর্তী ব্যাকস্ল্যাশ সহ স্পষ্টরূপে এটির রুট নেমস্পেসে সেট করা:

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

4
এটি প্রথম দেখার বিষয় হওয়া উচিত।
জেমস বেইলি

15

Php_mysqli.dll এক্সটেনশনটি php.ini এ সংক্ষিপ্তকরণ ছাড়াও , php.iniএক্সটেনশন_ডির নির্দেশকে আপত্তি জানান এবং আপনার অবস্থান উল্লেখ করুন:

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

এটি আমার পক্ষে কাজ করেছে।


এটি আমার পক্ষে কাজ করেছে তবে ./extএটিই আপেক্ষিক পথ। এবং আমাকে সেই ফাইলটির নাম পরিবর্তন php.ini-developmentকরতে হয়েছিল php.iniএবং অসুবিধা করতে হয়েছিল extension=php_mysqli.dll। ওহ ছেলে, আমি আপনাকে পিএইচপি মিস করিনি।
ওভারড্রাইভার

আমার জন্য (উইন্ডোজটিতে) কৌশলটি ছিল "এক্সটেনশন_ডির" তে এক্সটেনশানগুলির সম্পূর্ণ পথে টাইপ করা।
টেকনাইকুইস্ট


2

আপনি যদি ডকারে থাকেন ...

পিএইচপি-কন্টেইনার আরএনআউনের ভিতরে:

#docker-php-ext-install mysqli

#apachectl restart

2

আপনার ইনস্টলেশন নিয়ে সমস্যা মনে হচ্ছে।

  • আপনি কি মাইএসকিউএলআই ইনস্টল করেছেন?
  • আপনি php.ini এ এটি সক্রিয় করেছেন?
  • অ্যাপাচি এবং / অথবা পিএইচপি-এফপিএম পুনরায় চালু করবেন?

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


2

Php.ini এ কীভাবে mysqli সক্ষম করবেন

  1. Php.ini এ নিম্নলিখিত কনফিগারেশনটি ';' (কোলন) অপসারণ করে সম্পাদনা / অসাধুকরণ করুন: 1 ম (নিরঙ্কুশ এবং অ্যাড কনফিগারেশন):
    include_path = "C:\php\includes"
    
    ২ য় (অবরুদ্ধ):
    extension_dir = "ext"
    
    তৃতীয় (কোনও পরিস্থিতি এবং সম্পাদনা কনফিগারেশন):
    extension=C:/PHP/ext/php_mysql.dll
    extension=C:/PHP/ext/php_mysqli.dll
    
  2. আইআইএস সার্ভারটি পুনরায় চালু করুন
  3. নিশ্চিত হয়ে নিন যে সিস্টেমে মাইএসকিএল চলছে।

কিভাবে php.ini ফাইল লোড করবেন

  1. Php.ini-product / php.ini-વિકાસ ফাইলের যেকোন একটিকে সি: পিএইচপি থেকে php.ini এ নামকরণ করুন (এখন দ্রষ্টব্য এক্সটেনশনটি ইনি অর্থাৎ "php.ini" হবে)।
  2. পিএইচপি.এনই নাম বদলে সার্ভার পুনরায় চালু করুন
  3. Http: //localhost/phpinfo.php এ পরিবর্তনগুলি দেখুন

1

আমি ভেবেছিলাম নেমস্কো সার্ভারগুলি ব্যবহার করে একই সমস্যায় আমি কাউকে সাহায্য করতে পারি। আমি হোম পিসিতে আমার স্থানীয় সার্ভার থেকে একটি ডাটাবেস নেমস্কোতে স্থানান্তরিত করার পরে এই সমস্যাটি সমাধান করার চেষ্টা করছি। তারা সহায়তা করবে না তারা বলেছিল এটি একটি কোডিংয়ের সমস্যা was

  • তবে, তাদের সিপিএএনএল লিনাক্স হোস্টিং ইন্টারফেস থেকে ঠিক করা সহজ ছিল simple
  • পিএইচপি এ ক্লিক করুন।
  • তারপরে পিএইচপি মডিউলগুলিতে ক্লিক করুন এবং তাদের प्री-ইনস্টল করা মডিউলগুলির তালিকা থেকে কেবল মাইএসকিলি-র জন্য বক্সটি ক্লিক করুন।
  • তারপরে সেভ ক্লিক করুন। (যদি এটি অন্য সার্ভারে (গুলি) কাজ করে তবে কোড পরিবর্তন করার দরকার নেই))

দুর্ভাগ্যক্রমে, তাদের সমর্থন নিবন্ধগুলি সময়ের অপচয় ছিল। এটি পড়ার পরে আমি একটি নতুন সংকল্প নিয়ে অ্যাডমিন ইন্টারফেসে গিয়েছিলাম।


0

কিছু বিতরণ (যেমন জেন্টু ) পিএইচপি-র একাধিক ইনস্টলেশনকে সমর্থন করে এবং আপনাকে নিশ্চিত করতে হবে যে আপনি মাইএসকিলি ইনস্টল ও সক্ষম করে রেখেছেন one

জেন্টুতে, আমি একটি নতুন পিএইচপি ইনস্টল করেছিলাম (মাইসকিলি ইউএসই পতাকাটি সক্ষম করে) তবে পিএইচপি-র নতুন সংস্করণটি সক্রিয় করার দরকার ছিল (যেহেতু পুরানোটি অবশ্যই মাইসকিলি অনুপস্থিত ছিল):

# 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

আমি উপরের সমস্তটি যাচাই করেছিলাম এবং এটি আমার পক্ষে কার্যকর হয়নি,

আমি কিছু পদক্ষেপ পেয়েছি।

আমি ব্যবহৃত পিএইচপি সংস্করণ 5.5.9-1ubuntu4.17 উপর উবুন্টু 14.04

প্রথমে ফোল্ডারটি পরীক্ষা করুন

#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

পিএইচপি জিপটিতে সাধারণত ব্যবহৃত এক্সটেনশনগুলি (* .dll উইন্ডোজ যেমন php_mysqli.dll) \ ext ডিরেক্টরিতে অন্তর্ভুক্ত থাকে তবে সেগুলি ডিফল্টরূপে সক্ষম হয় না। মাইএসকিউএলআই ব্যবহার করার চেষ্টা করার সময় আপনি এই মারাত্মক ত্রুটিটি পেয়ে যাচ্ছেন:

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

এক্সটেনশানগুলি সক্ষম করতে, php.ini খুলুন (আপনাকে প্রথমে php.ini- বিকাশ php.ini হিসাবে অনুলিপি করতে হবে), এবং এই দুটি লাইন আন-মন্তব্য (বা যুক্ত) করতে হবে:

extension_dir = "ext"

এবং যে কোনও নির্দিষ্ট এক্সটেনশানগুলির জন্য আপনি মারাত্মক ত্রুটিগুলি পেয়ে যাচ্ছেন, অর্থাত্ মাইএসকিলির জন্য:

extension=mysqli




0

যে কারও ডকার ব্যবহার করার জন্য, আমি এই সমস্যাটিতে ছড়িয়ে পড়েছি এবং পিএইচপি: এফএমপি চিত্রের পরিবর্তে আমার নিজের ডকফায়াইল ব্যবহার করে এটি সমাধান করেছি:

FROM php:fpm

RUN docker-php-ext-install mysqli

0

দীর্ঘ বিশ্লেষণ প্রক্রিয়া করার পরে আমি এই সমস্যার সমাধান খুঁজে পেয়েছি। কমান্ড লাইন বৈশিষ্ট্যগুলির সাথে আমার পিএইচপি ইনস্টলেশনটি সঠিকভাবে পরীক্ষা করার পরে আমি জানতে পেরেছিলাম যে পিএইচপি ভালভাবে কাজ করছে এবং এটি মাইএসকিএল ডাটাবেসের সাথে কাজ করতে পারে। বিটিডব্লিউ আপনি পিএইচপি কোড দিয়ে পিএইচপি কোড দিয়ে ফাইল-ফাইল চালাতে পারেন php -f filename.php
সুতরাং আমি বুঝতে পেরেছি, এপাচে এটি অবশ্যই কিছু ভুল হতে পারে।
আমি ভিতরে কেবল phpinfo () ফাংশন দিয়ে একটি ফাইল তৈরি করেছি।
এখানে আমি দেখেছি,
লোড কনফিগারেশন ফাইলের লাইনে
আমার কনফিগারেশন ফাইলটি লোড করা হয়নি, পরিবর্তে সেখানে উল্লেখ করা হয়নি (কিছুই নেই)।

অবশেষে আমি অ্যাপাচি কনফিগারেশনের মধ্যে এন্ট্রি পেয়েছি

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

তবে আমি পিএইচপি 7 ইনস্টল করেছি এবং তাই অ্যাপাচি php.ini ফাইলটি লোড করতে পারেনি কারণ এর জন্য কোনও প্রবেশিকা ছিল না। আমি আরো বললাম

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

এবং অ্যাপাচি পুনরায় চালু করার পরে সমস্ত ভাল কাজ করে।

উপরের এই কোডগুলি ব্লক করে আমি আমার httpd-xampp.conf ফাইলে পেয়েছি। এটি আপনার কনফিগারেশন এ অন্য কোথাও হতে পারে।
একই ফাইলটিতে আমি পিএইচপি 5 সংস্করণের পরিবর্তে পিএইচপি 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"

আপনি দেখতে পাচ্ছেন যে আমি এক্সএএমপিপি প্যাকেজ ইনস্টল করেছি তবে এই সমস্যাটি কেবল অ্যাপাচি পাশে ছিল।


0

পিএইচপি দ্বারা পিএইচপিএক্সএক্স-এক্সটেনশন ইনস্টল করুন। আমার ফ্রিবিএসডি-র ক্ষেত্রে:

pkg install php74-extensions

0

আমি এক্সএএমএপপি ব্যবহার করছি এবং একবার নাম পরিবর্তন করার পরে আমার সমস্যাটি ঠিক হয়ে গেছে:

extension_dir = "ext"

প্রতি

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

PS: এই পরিবর্তনটি করার পরে অ্যাপাচি পুনরায় চালু করতে ভুলবেন না!


0

Php.ini এ:

extension_dir ="c:/wamp64/bin/php/php7.4.9/ext/"

নিশ্চিত করুন যে পিএইচপি সংস্করণটি সঠিক কিনা।


0
  1. আপনার পিএইচপি ফোল্ডারটি খুলুন।
  2. Php.ini- বিকাশ খুঁজুন এবং এটি খুলুন।
  3. অনুসন্ধান ;extension=mysqli
  4. ;প্রতীক মুছুন
  5. ফাইল সংরক্ষণ করুন এবং ফাইল এক্সটেনশনটি php.ini- বিকাশ থেকে php.ini এ পরিবর্তন করুন
  6. সার্ভারটি পুনরায় আরম্ভ করুন এবং কোডটি পরীক্ষা করুন:
    if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {  
            echo 'We don\'t have mysqli!!!';  
     } else {  
         echo 'mysqli is installed';
     }
  1. যদি এটি কাজ না করে, php.ini- এ এক্সটেনশন_ডির উভয়কে "এক্সট্রাক্ট" থেকে "সি: \ পিএইচপি \ এক্সট" এবং এক্সটেনশন = মাইসকলি থেকে এক্সটেনশন = পিএইচপি_মাইসকলি.ডিএল পরিবর্তন করে আবার পরীক্ষার সময় সার্ভারটি পুনরায় সেট করতে মনে রাখবেন

-2
<?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());
            }
        }
    }
?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.