web-dev-qa-db-ja.com

致命的なエラー:クラス「MySQLi」が見つかりません

私はチュートリアルをしていますが、このエラーが発生しています:

致命的なエラー:8行目にクラス 'MySQLi'が見つかりません(長いURL)

8行目のコードは次のとおりです。

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

オンラインで誰かが私のphpinfo()で有効になっているかどうかを確認するように言われましたが、「mysqli」の下に何もリストされていませんでした。

また、PHPバージョン5.2.5を実行しています

82
Tylor

MySQLiのインストール が必要なように思えます。

それでも問題が解決しないと思われる場合は、オペレーティングシステムと、それをさらに診断するのに役立つ可能性のあるものを投稿してください。

77
Greg

次のコードを実行して、mysqliライブラリが存在するかどうかを確認できます。

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

bunt を使用している場合は、次を実行します。

 Sudo apt-get install php5-mysqlnd
35
anshuman

名前空間のあるクラス内から「new 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());
15
alexkb

php_mysqli.dllphp.iniの拡張機能のコメントを外すことに加えて、php.iniextension_dirディレクティブのコメントも解除します=および場所を指定します。

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

これは私にとってうまくいった。

10
catawampus

私の OSbunt です。私は以下を使用してこの問題を解決しました:

Sudo apt-get install php5-mysql
5
user3839088

インストールに問題があるようです。

  • MySQLiをインストールしましたか?
  • Php.iniで有効にしましたか?

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

2
vartec

Namescoサーバーを使用して、同じ問題を抱えている人を助けることができると思いました。データベースをホームPCのローカルサーバーからnamescoに移動した後、この問題を解決しようとしています。彼らはそれがコーディングの問題であると言ったのを助けません。

  • ただし、CPANEl LINUXホスティングインターフェイスから修正するのは簡単でした。
  • Phpをクリックします。
  • 次にphpモジュールをクリックし、プリインストールされたモジュールのリストからmysqliのボックスをクリックするだけです。
  • 次に、保存をクリックします。 (別のサーバーで機能した場合、コードを変更する必要はありません。)

残念ながら、彼らのサポート記事は時間の無駄でした。これを読んだ後、私は新しい決意で管理インターフェースに行きました。

みなさん、ありがとうございます。

1
John

Php.iniでmysqliを有効にする方法

  1. 「;」(コロン)を削除して編集/コメント解除します。php.iniの次の構成:1st(構成をコメント解除して追加):include_path = "C:\php\includes "2nd(コメント解除):extension_dir =" ext "3rd(設定のコメントを解除して編集):extension = C:/PHP/ext/php_mysql.dll extension = C:/PHP/ext/php_mysqli.dll
  2. IISサーバーを再起動します
  3. Mysqlがシステムで実行されていることを確認してください。

Php.iniファイルを読み込む方法

  1. ファイルphp.ini-production/php.ini-developmentのいずれかをC:\ PHPからphp.iniに名前変更します(拡張子はiniつまり「php.ini」になることに注意してください)。
  2. Php.iniファイル再起動サーバーに名前を変更した後
  3. http://localhost/phpinfo.php の変更を参照してください
1
Gani

上記をすべて確認したが、うまくいきませんでした。

私が見つけたいくつかのステップがあります。

PHPバージョン5.5.9-1ubuntu4.17 on buntu 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が含まれていない場合は、インストールに関する他の回答を読んでください。

Open php.ini find extension_dir

私の場合、extension_dir = /usr/lib/php5/20121212を設定する必要があります

Apache2を再起動します:/ect/init.d/Apache2 restart

0
vanduc1102

長い分析手順を経て、この問題の解決策を見つけました。コマンドライン機能を使用してphpのインストールを適切にテストした後、phpが正常に機能し、mysqlデータベースで機能することがわかりました。ところでコマンドphp -f filename.phpを使用して、phpコードでコードファイルを実行できます。
だから、Apacheに何か問題があるに違いないと気づきました。
phpinfo()関数のみを含むファイルを作成しました。
ここで見たのは、
読み込まれた設定ファイル
私の設定ファイルはロードされず、代わりに言及されました(なし)。

最後に、Apache構成内でエントリを見つけました
<IfModule php5_module>
PHPINIDir "C:/xampp/php"
</IfModule>

しかし、PHP 7をインストールしたため、Apacheはphp.iniファイルを読み込むことができませんでした。そのエントリがなかったためです。追加した

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

また、Apacheを再起動すると、すべて正常に機能します。

上記のこれらのコードブロックは、httpd-xampp.confファイルにあります。あなたの設定のどこかにあるかもしれません。
php 5バージョンの代替として、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パッケージがインストールされていますが、この問題はApache側にありました。

だから私はそれが誰かがこの問題を修正するのに役立つことを願っています。

0

PHP Zipには、\ extディレクトリの下にある一般的に使用される拡張機能(php_mysqli.dllなどのWindowsでは* .dll)のほとんどが含まれていますが、デフォルトでは有効になっていません。 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としてコピーする必要がある場合があります)、次の2行のコメントを解除(または追加)します。

extension_dir = "ext"

致命的なエラーが発生している特定の拡張機能、つまりmysqliの場合:

extension=mysqli
0
Griknok

一部のディストリビューション( Gentoo など)は、PHPの複数のインストールをサポートしており、mysqliをインストールして有効にした状態で使用していることを確認する必要があります。

Gentooでは、新しいPHP(mysqli USEフラグを有効にした)をインストールしましたが、PHPの新しいバージョンをアクティブにする必要がありました(古いバージョンには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
0
Jared Thirsk

ubuntuで:

Sudo apt-get install php-mysql
Sudo service Apache2 restart
0
vishalknishad

これにより、最初の「見つからない」エラーが解決されました。バックスラッシュに注意してください。今は夢のように機能します。名前空間を使用する場合にのみ必要ですが、最近は誰が必要ですか?

$ mysqli = new\MySQLi($ db_server、$ db_user、$ db_pass、$ db_name)またはdie(mysqli_error());

0
Rob Baartwijk
<?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());
            }
        }
    }
?>
0
hari

PHPの新規インストールでは、php.iniの;の前のextension_dirを削除します。

0
Andrei