未定義の関数mysql_connect()


83

実行しましたaptitude install php5-mysql(そしてMySQL / Apache 2を再起動しました)が、それでもこのエラーが発生します:

致命的なエラー:21行目の/home/validate.phpにある未定義の関数mysql_connect()の呼び出し

phpinfo() /etc/php5/apache2/conf.d/pdo_mysql.iniファイルが解析されたと言います。


他の組み込みのPHP / MySQL関数はどうですか?彼らは働きますか?
samayo 2012

間違ったユーザー/パスを入力しようとしましたが、「または死ぬ」ステートメントが表示されないため、おそらくそうではありません!
user1765369 2012

回答:


53

さて、これはあなたのチャンスです!PDOの準備ができているようです。代わりにそれを使用してください。

PHPMySQL拡張モジュールがロードされているかどうかを確認してみてください。

<?php
    phpinfo();
?>

そこにない場合は、php.iniファイルに以下を追加します。

extension=php_mysql.dll

これはデータベースに接続するためのより良い方法ですか?調べてみますが、新しいサーバーに移動するまでは以前は機能していたので、最初にこれを機能させたいと思います。
user1765369 2012

2
です。mysql_*関数は危険であり、PHP4.1では非推奨です。Apacheエラーログを確認し、サーバーを再起動します。それは動作しますか?
wanovak 2012

xamppを使用していますが、その行をphp.iniに追加した後、apacheerror.logに次のメッセージが表示されます。ダイナミックライブラリを
bigpony

1
@defmx .dllファイルはそのパスに存在しますか?そうでない場合は、インストールする必要があります。
wanovak 2016年

65

すでにPHP7を使用している場合は、以前は非推奨だった関数mysql_*が完全に削除されているため、mysqli_*代わりにPDO関数または関数を使用してコードを更新する必要があります。

それが不可能な場合は、回避策として、-functionsを使用して古いmysql_*関数を再作成する小さなPHPインクルードファイルを作成しましたmysqli_*()fix_mysql.inc.php


1
私の場合の完璧な解決策は、まだアップグレードして既存のコードをすべて壊すことはできませんでした。ただし、インクルードされたファイルは、コンストラクターがインクルードした親クラスのグローバル変数を読み取ることができなかったため、ファイル内のグローバル$ con変数が問題でした。ただし、必要に応じて、インクルードファイルの関数内に接続変数を作成しただけです。これで、私のコードは正常に機能します。ありがとうございました。
zeeshan

これは、古いコードベースを新しいサーバープラットフォームで再度実行するのに非常に役立ちました。乾杯!
mxmader 2018年

4
おかげで...それが保存されて生産がPHP7とPHP5アプリケーションにアップグレードされた私の人生は決裂
geekonweb

これは、古いPHPアプリケーションをアップグレードする時間を節約するための優れた回避策です。どうもありがとう。
JoelKarunungan20年

@ ubo77に感謝します。従来のコードベースでいくつかの頭痛の種を節約しました。
mikoop

57

これにUbuntuのタグを付けたようです。ほとんどの場合、MySQLドライバ(および場合によってはMySQL)がインストールされていません。あなたが持っていると仮定すると、SSHまたは端末にアクセスし、sudoの権限を、サーバにログインして、これを実行します。

sudo apt-get install mysql-server mysql-client php5-mysql

MySQLパッケージまたはphp5-mysqlパッケージがすでにインストールされている場合、これによりそれらが更新されます。


更新

この回答はまだ時々クリックされるので、私はそれを更新して含めるつもりです PHP7。PHP 7ではMySQLに別のパッケージが必要なため、apt-getコマンドに別の引数を使用する必要があります。

sudo apt-get install mysql-server mysql-common php7.0 php7.0-mysql

そして重要なことに、mysql_connect()PHPv5.5.0以降は非推奨になっています。こちらの公式ドキュメントを参照してください:PHP:mysql_connect()


私は、パッケージphp7.0を見つけることができません取得
strangetimes

7.0を7.3に置き換えます
rubo 7720年

46

docker phpの公式画像の問題で誰かがここに来た場合は、dockerコンテナ内で以下のコマンドを入力してください。

$ docker-php-ext-install mysql mysqli pdo pdo_mysql

詳細については、上記のHow to install more PHP extensionsセクションのリンクを参照してください(ただし、私にとっては少し難しいです...)。

または、このドキュメントが役立つ場合があります。

https://docs.docker.com/samples/library/php/


4
mysql私が欲しいのは
deFreitas 2017年

17

また、未定義のMySQL_connect()の同じ問題で立ち往生しました。PHP.iniファイルに変更を加えようとしましたが、同じエラーが発生していました。次に、このソリューションにたどり着き、コードを減価償却されたphp関数から新しい関数に変更しました。

$con=mysqli_connect($host,$user,$password);

mysqli_select_db($con,dbname); 
//To select the database

session_start(); //To start the session

$query=mysqli_query($con,your query); 
//made query after establishing connection with database.

これがお役に立てば幸いです。このソリューションは私にとって正しく機能しています。

編集:

古いphpからアップグレードする場合は、 apt-get install php7.0-mysql



6

試してください:

<?php
  phpinfo();
?>

ページを実行して検索します mysqlます。見つからない場合は、シェルで以下を実行し、Apacheサーバーを再起動します。

sudo apt-get install mysql-server mysql-client php5-mysql

また、apache2.conf(またはconf.d / php.ini)ファイルのどこかで、次のすべての行のコメントが解除されていることを確認してください。

;extension=php_mysql.so

extension=php_mysql.so

4

私の推測では、PHPのインストールはMySQLサポートでコンパイルされていません。

configureコマンド(php -i | grep mysql)を確認してください。あなたは次のようなものを見るはずです'--with-mysql=shared,/usr'です。

完全な手順については、http://php.net/manual/en/mysql.installation.phpで確認できます。ます。ただし、@ wanovakによって提案されたソリューションを使用したいと思います。

それでも、PDOを使用するにはMySQLのサポートが必要だと思います。


1

質問はでタグ付けされてubuntuいますが、コメントを外す解決策はextension=mysqli.dllWindowsに固有です。私はここで混乱していますか?!とにかく、最初に実行<? php phpinfo ?>mysql*Configuration見出しの下を検索します。そのようなものが表示されない場合は、インストールまたは有効化されていないことを意味しますphp-mysql。したがって、最初にインストールしますphp-mysql

sudo apt get install php-mysql

このコマンドは、インストール済みのものにphp-mysql応じてインストールphpされるので、バージョンの心配はありません!!。

次に、UNIX固有のソリューションがありphp.iniます。ファイル内のコメント解除行

extension=msql.so

それは検証msql.so存在であり/usr/lib/php/<timestamp_folder>ELSE

extension=path/to/msql.so

次に、最後にapachemysqlサービスを再起動すると、見出しのmysql下のセクションが表示さConfigrationsれます。phpinfo page


0

私が取り組んでいたプロジェクトがphp5.6で開発され、インストール後、プロジェクトをphp7.1で実行できなかったため、このエラーが発生していました。

ubuntu / nginxでVagrantを使用する人のために、nginxディレクトリ(/ etc / nginx /)には、vagrantmaschine用に構成されたurlのような名前のファイルを含む「sites-available」という名前のディレクトリがあります。私の場合はhomestead.appでした。このファイル内には、次のような行があります。

    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;

そこで、phpのバージョンをその特定のサイトに必要なものに変更できます。

これをグーグルで検索しましたが、どこを見て何を変更するかを示す簡単な答えを実際に見つけることができませんでした。

これが誰にでも役立つことを願っています。ありがとう。


0

CentOS7.8およびPHP7.3の場合

yum install rh-php73-php-mysqlnd

そして、apache / phpを再起動します。


-1

次のようなエラーが発生した場合

致命的なエラー:未定義の関数mysql_connect()の呼び出し

親切にcPanelにログインします>> PHPバージョンの選択をクリックします>>拡張機能MYSQLを選択します


4
OPがCPanelを使用しているという質問には何の示唆もありません。
クエンティン2016年

-3

構文エラーがあるはずです。このコードをコピーして貼り付け、機能するかどうかを確認します。

<?php
    $link = mysql_connect('localhost', 'root', '');
    if (!$link) {
        die('Could not connect:' . mysql_error());
    }
    echo 'Connected successfully';
    ?

同じエラーメッセージが表示されました。のmsql_connect()代わりに関数を使用していたことがわかりましたmysql_connect()


OPには未定義の関数mysql_connectがあり、msql_connectがないため、提案どおりに誤って入力しませんでした。
logicbloke 2016年

-3

(Windows mysql config)

ステップ1:Apacheコントロールパネル> Apache> Config> PHP.iniに移動します

ステップ2:メモ帳で検索(Ctrl + F):(;extension_dir = ""コメントを付けることができます;)。この行を次のように置き換えますextension_dir = "C:\php\ext";文の先頭のを削除する必要はありません)。

ステップ3:検索:最初にextension=php_mysql.dllを削除し;ます。

ステップ4:ApacheHTTPサーバーを保存して再起動します。(Windowsでは、これは通常UIを介して行われます)

それでおしまい :)

行方不明に関するエラーが発生したphp_mysql.dll場合は、おそらくphp.netサイトまたはpecl.php.netからこのファイルをダウンロードする必要があります。(どこから入手するかについては注意してください)

PHPの詳細:Windowsへの拡張機能のインストール-手動


1
これはWindowsにとっては正しいかもしれませんが、この質問にはUbuntuのタグが付けられていますが、これは間違いなくC:\\phpシステムにはありません。
tadman 2016

@tadmanは、それがUbuntu用であるかどうかは関係ありません。今日、Windowsに新規インストールした後、機能しました。
Ravi Gaurav Pandey 2018年

1
@RaviGauravPandey元の質問はUbuntuに関するものでした。それがWindows上であなたのために働くということは重要ではありません。これは、Ubuntuの質問に対するWindowsの回答です。
tadman 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.