web-dev-qa-db-ja.com

未定義関数mysql_connect()

私はaptitude install php5-mysqlを実行し(そしてMySQL/Apache 2を再起動しました)、私はまだこのエラーを受けています:

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

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

57
user1765369

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

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

<?php
    phpinfo();
?>

表示されない場合は、php.iniファイルに次の行を追加してください。

extension=php_mysql.dll
45
wanovak

あなたがUbuntuでこれにタグを付けたのを私は見ます。おそらくMySQLドライバー(そしておそらくMySQL)がインストールされていません。 SSH または端末アクセス権とSudoアクセス権があると仮定して、サーバーにログインして次のコマンドを実行します。

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

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


更新

この答えはまだ時折クリックされるので、 PHP 7 を含めるように更新します。 PHP 7ではMySQLに別のパッケージが必要なので、apt-getコマンドには別の引数を使用します。

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

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

51
Sarcastron

誰かが docker php official images の問題を抱えてここに来た場合は、dockerコンテナの中に下記のコマンドを入力してください。

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

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

または、このドキュメントが役に立つかもしれません。

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

34
kujiy

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

それが不可能な場合は、回避策として、古いmysql_*関数をmysqli_*()-で再作成する小さなPHP includeファイルを作成しました。機能: fix_mysql.inc.php

33
rubo77

私は未定義の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が必要です。

8
apurva sharma

試してください:

<?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
5
fortune

Php.iniファイル

これを変える

;extension=php_mysql.dll

extension=php_mysql.dll
5

あなたのPHPインストールはMySQLサポートでコンパイルされていません。

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

完全な手順については、 http://php.net/manual/ja/mysql.installation.php で確認できます。とはいえ、@wanovakが提案している解決策をお勧めします。

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

4
Muc

質問はubuntuでタグ付けされていますが、extension=mysqli.dllのコメントを外すことによる解決策はウィンドウズ特有のものです。とにかく、<? php phpinfo ?>を実行してConfigurationの見出しの下でmysql*を検索してください。そのようなことが見られない場合は、php-mysqlをインストールまたは有効にしていないことを意味します。最初にphp-mysqlをインストールしてください

Sudo apt get install php-mysql

このコマンドはあなたが既にインストールしたphpに応じてphp-mysqlをインストールするので、バージョンについての心配はありません!!.

それから、unix特有の解決策が来ます、php.iniファイルで、その行のコメントを外してください

extension=msql.so

msql.so/usr/lib/php/<timestamp_folder>に存在することを確認します。ELSE

extension=path/to/msql.so

その後、最後にApacheおよびmysqlサービスを再起動します。これでphpinfo pagemysqlという見出しの下にあるConfigrationsセクションが表示されます。

1
Dota2

私が作業していたプロジェクトはphp 5.6で開発され、インストール後にphp 7.1でプロジェクトを実行できなかったため、このエラーが発生しました。

Ubuntu/nginxでVagrantを使っている人のために、nginxディレクトリ(/ etc/nginx /)にはvagrant maschine用に設定されたurlのような名前のファイルを含む "sites-available"という名前のディレクトリがあります。私の場合はHomestead.appでした。このファイルの中には次のような行があります。

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

そこでは、その特定のサイトに適したバージョンにphpバージョンを変更できます。

これはグーグルでしたが、どこを見て何を変えるべきかという簡単な答えを見つけることができませんでした。

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

0
freifede