たまたま私の友人の xjb も今日この問題に遭遇したので、問題の説明と解決策を記録するためにこのメモを書きました。
問題の説明: Web メソッドを使用すると、mysql に接続できますが、コマンド ラインでは次のプロンプトが表示されます:
致命的エラー: 未定義の関数 mysql_connect()
環境: Windows 2003、PHP 5.2.0、MYSQL 5.0、Apache 2.0
php.ini では、php_mysql.dll のモジュール オプションがオンになっています。テスト スクリプトも非常に単純で、mysql_conect 関数のみです。内容は次のとおりです:
コードをコピーします。 :
php.ini:extension =php_mysql.dll
テストスクリプトtest.phpの内容は次のとおりです:
text.php
if ( !mysql_connect(DBHOST, DBUSER,DBPWD) )
{
echo "接続に失敗しました!";
終了;
echo "接続が成功しました!t"
Web メソッドを使用して http://localhost/test.php を呼び出します。 「接続が成功しました」と表示されます
ただし、dos コマンドラインを使用して d: /php/php.exe test.php を呼び出すと、エラーメッセージは次のようになります: Fatal Error: unknown function mysql_connect()
明らかに、 dos コマンドライン環境では、mysql モジュールは呼び出されません。すべての方法を試しましたが、それでも解決できませんでした。その後、php の設定と 2 つの環境の違いを確認するためのスクリプトを書きました。以下のように:
2 つの環境で phpinfo() によって入力された php 設定情報を注意深く確認し、最終的に問題を発見しました: Web メソッド http:/ /localhost /test.php モードで呼び出すと、その構成ファイル (php.ini) パスは C:WINDOWSphp.ini として表示されます。 DOS COMMAND コマンド ライン モード d:/php/php.exe test.php が呼び出されるとき、その設定ファイル (php.ini) のパスは d:phpphp.ini です。 c:windows ディレクトリと d:php ディレクトリの両方に php.ini ファイルがありますが、d:php ディレクトリの php.ini では extension=php_mysql.dll モジュールが開きません。そこで、d:phpphp.iniを削除し、c:windowsphp.iniだけを残したところ、問題は解決しました。
要約: Windows に php をインストールする場合、設定ファイルの混乱を避けるために、インストール ディレクトリにある php.ini を Windows ディレクトリにコピーした後、元のインストール ディレクトリにある php.ini ファイルの名前を変更するか、削除する必要があります。異なる環境で実行すると、検索構成ファイルに不整合が発生する可能性があります。問題の原因は通常非常に単純ですが、問題を見つけてトラブルシューティングするプロセスは非常に面倒です。
上記は、DOS コマンド ラインで PHP が MySQL に接続できない問題を解決するための一般的な DOS コマンドに関する技術的なメモを紹介したもので、PHP チュートリアルに興味のある友人に役立つことを願っています。