私はチュートリアルをしていますが、このエラーが発生しています:
致命的なエラー: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を実行しています
MySQLiのインストール が必要なように思えます。
それでも問題が解決しないと思われる場合は、オペレーティングシステムと、それをさらに診断するのに役立つ可能性のあるものを投稿してください。
次のコードを実行して、mysqliライブラリが存在するかどうかを確認できます。
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'Phew we have it!';
}
bunt を使用している場合は、次を実行します。
Sudo apt-get install php5-mysqlnd
名前空間のあるクラス内から「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());
php_mysqli.dllのphp.iniの拡張機能のコメントを外すことに加えて、php.iniのextension_dirディレクティブのコメントも解除します=および場所を指定します。
extension_dir = "C:\software\php\dist\ext"
これは私にとってうまくいった。
インストールに問題があるようです。
Namescoサーバーを使用して、同じ問題を抱えている人を助けることができると思いました。データベースをホームPCのローカルサーバーからnamescoに移動した後、この問題を解決しようとしています。彼らはそれがコーディングの問題であると言ったのを助けません。
残念ながら、彼らのサポート記事は時間の無駄でした。これを読んだ後、私は新しい決意で管理インターフェースに行きました。
みなさん、ありがとうございます。
Php.iniでmysqliを有効にする方法
Php.iniファイルを読み込む方法
上記をすべて確認したが、うまくいきませんでした。
私が見つけたいくつかのステップがあります。
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
長い分析手順を経て、この問題の解決策を見つけました。コマンドライン機能を使用して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側にありました。
だから私はそれが誰かがこの問題を修正するのに役立つことを願っています。
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
一部のディストリビューション( 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
ubuntuで:
Sudo apt-get install php-mysql
Sudo service Apache2 restart
これにより、最初の「見つからない」エラーが解決されました。バックスラッシュに注意してください。今は夢のように機能します。名前空間を使用する場合にのみ必要ですが、最近は誰が必要ですか?
$ mysqli = new\MySQLi($ db_server、$ db_user、$ db_pass、$ db_name)またはdie(mysqli_error());
<?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());
}
}
}
?>
PHPの新規インストールでは、php.iniの;
の前のextension_dir
を削除します。