2017-05-08 5 views
3

背景

私はWAMPサーバ(3.0.6)は、私のWindows 10コンピューターにインストールされています。いくつかのカスタムMySQLテーブルを使用してWordPressサイトを開発していますので、$wpdbを使用しています。PHPの7.1 - mysqli_connectが定義されていない(拡張子がオンになっている)

問題

私はPHP 7.0.10で実行されていた、とすべてが大丈夫でした。今朝、私はPHP 7.1.4をインストールし、そして突然、私はこのエラーを得た:

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in ...\wp-includes\wp-db.php:1573

私はそれに掘っをバック__construct()機能に問題をトレースし、そしてこのif声明:

if (function_exists('mysqli_connect')) { 

var_dumpはfunction_exists('mysqli_connect')falseを返すことを示していました。

enter image description here

未解答の問題は、私が有効になってmysqli拡張子はありませんませある

enter image description here

enter image description here

を私は戻っての7.0.xに切り替えている(とエラーが消えた)私は

を試してみたの

物事は、7.1.4を再インストールし、それに切り替え、7.1.4を削除しました。それでも動作しません。

7.1.0を試しましたが動作しません。

拡張機能のオンとオフを切り替えることを試みましたが、それは何も変わりません。

実際のphp_mysqli.dllファイルを作業7.0.10ディレクトリから7.1.4ディレクトリにコピーしようとしましたが、動作しません。要求ごと

編集

、私はphpinfo()から表示されているものが何であるかのスクリーンショットを追加しました。 7.0の下では、mysqliの情報セクションが表示され、7.1ではセクションがありません。

enter image description here enter image description here

+0

あなたの問題はすべてタイプミスです( –

+0

)mysql_connect()からのエラーですが、mysqli_connect()関数が存在するかどうかをチェックする際に間違った結果が出ることがあります。 – Qirel

+0

'wp-あなたの元の投稿http://stackoverflow.com/revisions/43848269/1の一部である\ wp-db.php'を含んでいます。あなたはwordpressを使っていると示唆しています。 ;これらの変更を行った後に再起動しましたか? –

答えて

3

背景

まず第一に、WAMPServerはphp.iniファイルを処理する方法についてへのビット。 phpinfo()を使用した場合、ロードされたiniファイルへのパスはiniファイルになります。代わりに、Apacheのインストールを指しています。

enter image description here

しかし、あなたがそれを見れば、それは0KBシンボリックリンクです。実際には、PHPインストールのiniファイルへのリンクです。しかし、php.iniではなく、代わりにphpForApache.iniを指しています。したがって、この:

...\wamp64\bin\apache\apache2.4.23\bin\php.ini 

あなたは、Apacheフォルダにあるものを無視して、PHPのフォルダにiniファイルに焦点を当てることができ、実際にそう

...\wamp64\bin\php\php[VERSION]\phpForApache.ini 

です。ただし、php.iniは無視できません。両方を修正する必要があります。

には、ロードされたコンフィギュレーションファイルを確認するために、phpInfo()が表示されます。私は

何をしたか

私は、PHPのWebサイトからPHP 7.1をインストールし、そしてPHP 7.0のインストールから私のiniファイルを介して転送するのを忘れました。代わりに、PHPウェブサイトが提供するデフォルトのiniファイルを使用しました。

WAMPでPHPを動作させるために必要なファイルがiniに修正されているため、動作しませんでした。だから、2つのiniファイルを私の7.0.xフォルダからコピーしてから、mysqliのエラーを除いてほとんど動作し始めました。

私の問題の根本的な原因

時間のためにこれで傷の後、Fred -ii-last questionは最終的な答えに私を得ました。 PHPが古い拡張ファイルを参照しようとしました。理由は次のとおりです。

php.iniファイルとphpForApache.iniファイル(両方ともハードコードの一部のパス)

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

私はiniファイルを上書きコピーしていたが、彼らは7.0の拡張フォルダを指した:例えば、PHP 7.0.10用の拡張機能のフォルダパスは、このようにコード化されます。 7.0.x用のファイルdllは、7.1.xでは動作しません。

回答

私はPHP 7.1.4フォルダ内の二つのファイル(php.iniphpForApache.ini)に行き、世界的にテキスト「7.0.10」を「7.1.4」のすべてのインスタンスを置き換えます。そして今、それはすべて動作しています。

+0

クール、私はそれが私がこのコメントで言及したもののようだと思います(http://stackoverflow.com/questions/43848269/php-7-1-x-mysqli-connect-isnt-defined-extension-is-turned- ?noredirect = 1#comment74734806_43848269)、*はい?* –

+0

はい、本当にありがとうございます。私は答えのあなたのコメントを参照しました。私はあなたの助けに感謝します! –

+0

おかげさまで、あなたは大歓迎です。 * –

関連する問題