2日間、これを解決しようとしていますが、残念ながら結果はありません。問題についての私の話を聞かせてください。私はサイトでアプリケーションを作成しました。アプリケーションはレビューを処理します。しかし、私はそれを別のサイトに配置しようとしています。古いサイトからphpファイル、sqlファイルをコピーし、新しいサイトに移動しました(それらは異なるFTPサーバー上にあります)。アプリケーションからページにアクセスしようとすると、次の致命的なエラーが発生します。
致命的なエラー:未定義関数mysqli_connect()の呼び出し
データベースに接続するために作成したコードは次のとおりです(非表示の資格情報を使用)。
$con = mysqli_connect("","*the_name*","*the_pass*","*the_database*");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
エラーが発生するのはなぜですか?古いサーバーで動作しますが、ローカルホストでは動作し、新しいサーバーでは動作しないため、問題ではないと思うコードです。誰も私を助けることができますか?
サーバーを自分でホストする場合は、php.iniファイルで拡張子の前のセミコロンを削除しますextension = php_mysqli.dll
CentOS の場合:
Sudo yum install php-mysqli
簡単にやる
Sudo apt-get install php-mysqli
完全に機能し、バージョンに依存しません
Ubuntuでは、php5 mysql拡張機能をインストールする必要がありました。
apt-get php5-mysqlのインストール
PHP拡張がデフォルトで使用されていない場合に発生します。 php.iniファイルで、変更します;extension=php_mysql.dll
にextension=php_mysql.dll
。
**このエラーがログに記録される場合、このdllファイルへのパスを追加します。例えばextension=C:\Php\php-???-nts-Win32-VC11-x86\ext\php_mysql.dll
php_mysqli.dll
とphp_pdo_mysql.dll
についても同じことを行います。コードを保存して再度実行します。
会話に遅れて...
モジュールがインストールされ、PHP.INIファイルが適切に設定されている場合は、Apacheエラーログで次のようなものを確認してください。
PHP警告:PHPスタートアップ:動的ライブラリ 'C:\ php\ext\php_mysqli.dll'をロードできません-指定されたモジュールが見つかりませんでした。
この場合、拡張ディレクトリは思ったとおりではありません。次のように明示的に設定する必要がある場合があります。
extension_dir="C:\xampp\php\ext"
Centos7のphp7では、私のものが少し異なっていました。
/etc/php.ini内
; extension = mysqli
に
extension = mysqli
サーバーを自分でホストし、そのサーバーがApacheである場合、php.iniでextension=php_mysqli.dll
のコメントを外していても、このエラーが発生する可能性があります。
また、Apacheのhttpd.confでPHPIniDir
ディレクティブを使用して、php.iniの場所をApacheに指示する必要があります。
AddHandler application/x-httpd-php .php
PHPIniDir "<path-to-folder-where-php-ini-lives>"
ubuntu 16.04(おそらく以上)を使用している場合、このモジュールは既にありますが、デフォルトでは有効になっていません。これを行うだけです:
Sudo phpenmod mysqli
Mysqliは新しいサーバーにインストールされていません。 phpinfo()を実行して確認します。
<?php
phpinfo();
にエラーはありませんが、mysqli PHP拡張モジュールがマシンにインストールされていません。この問題を解決するには、サービスプロバイダーにお問い合わせください。
Raspberry Piでは、php5 mysql拡張機能をインストールする必要がありました。
apt-get install php5-mysql
クライアントをインストールしたら、ウェブサーバーを再起動する必要があります。 Apacheを使用している場合、以下が機能するはずです。
Sudo service Apache2 restart