2012-12-11 22 views
30

私はaptitude install php5-mysqlを走った(とMySQL/Apache 2の再起動)が、私はまだ、このエラーを取得していています未定義関数にmysql_connect()

Fatal error: Call to undefined function mysql_connect() in /home/validate.php on line 21

phpinfo()は/etc/php5/apache2/conf.d/を語りますpdo_mysql.iniファイルが解析されました。

+0

他の組み込みのPHP/MySql関数についてはどうですか?彼らは働きますか? – samayo

+0

おそらく、私は間違ったユーザー/パスを入力しようとしたし、私の「または死ぬ」声明が表示されていない! – user1765369

答えて

32

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

<?php 
    phpinfo(); 
?> 

それがない場合は、php.iniファイルに次の行を追加します:

は、PHP MySQL拡張モジュールがロードされているかどうかをチェックしてみ

extension=php_mysql.dll 
+0

これはデータベースに接続するより良い方法ですか?私はそれに目を通しますが、新しいサーバーに移行するまでは以前と同じように最初に作業したいと思っています。 – user1765369

+2

です。 mysql_ *関数は危険で、PHP 4.1以降では非推奨です。 Apacheのエラーログを確認し、サーバーを再起動してください。それは動作しますか? – wanovak

+0

私はサーバーを再起動しようとしましたが、それでも起こります。 – user1765369

40

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

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

が、これはそれらを更新します。


UPDATE

この答えはまだ私は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()

+1

あなたの答えを更新していただきありがとうございます – antix

+0

パッケージphp7.0を見つけることができません – strangetimes

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 
4

私の推測に

;extension=php_mysql.so 

から)ファイルには、PHPのインストールがMySQLサポートでコンパイルされていなかったです。

設定コマンド(php -i | grep mysql)を確認してください。 '--with-mysql=shared,/usr'のようなものが表示されます。

完全な手順はhttp://php.net/manual/en/mysql.installation.phpで確認できます。しかし、私はむしろ@wanovakによって提案された解決策に行きます。

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

-3

構文エラーがあります。このコードをコピーして貼り付け、それが動作するかどうか確認してください:

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

私は同じエラーメッセージがありました。 mysql_connect()の代わりにmsql_connect()関数を使用していました。

+0

OPはmysql_connect関数ではなく未定義の関数を持っていますので、提案通り誤って入力しませんでした。 – PhoenixNoor

+0

まあ、コードに間違いなく構文エラーがあります。 –

-3

ステップ1:のextension_dir = "":メモ帳(Ctrlキー+ F)で検索:Apacheのコントロールパネル]>アパッチ>コンフィグ> php.iniの

ステップ2に進みます。この行を次のように置き換えます。extension_dir = "C:¥php¥ext"

手順3:拡張子= php_mysql.dllを検索してを削除します。募集中の

手順4:Apacheのコントロールパネルを保存して再起動します。

それだ:)

+1

これはWindowsのための正しいかもしれませんが、この質問は、最も確かに 'C持っていないのUbuntu、タグ付けされている:\\システム上php'を。 – tadman

-2

Fatal error: Call to undefined function mysql_connect()

が親切cPanelのにログインとして、あなたがエラーを取得している場合>>選択PHPのバージョンクリックして>>拡張MYSQL

を選択
+3

OPがCPanelを使用しているという質問には提案はありません。 – Quentin

15

PHP7をすでに使用していて、旧式の関数mysql_*は完全に削除されているため、PDO-functを使用してコードを更新する必要がありますイオンまたはmysqli_*の代わりに機能します。内部コマンド下記の誰かがdocker php official imagesの問題にここに来た場合fix_mysql.inc.php

+0

私の場合の完璧なソリューションは、私はまだアップグレードして、私の既存のコードをすべて破ることができませんでした。しかし、インクルードされたファイルがコンストラクタを含む親クラスのグローバル変数を読み取ることができなかったため、ファイル内のグローバル$ con変数が問題になりました。しかし、私は必要なところでインクルードされたファイルの機能の中に接続変数を作成しました。今私のコードは正常に動作します。ありがとうございました。 – zeeshan

+0

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

20

、タイプ:私は小さな作成回避策として

それが不可能な場合は、mysqli_*() -functions古い機能を再現するファイルが含まれますドッカーコンテナ。 (...しかし、それは私にとっては少し難しいです)

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

は、詳細については、上記のリンクのHow to install more PHP extensionsセクションを参照してください。 php.iniファイルで

+1

mysqlは私が欲しいものです – deFreitas

0

変更この

;extension=php_mysql.dll 

extension=php_mysql.dll 
1

質問はubuntuでタグ付けされたが、コメント解除extension=mysqli.dllのソリューションはWindowsに固有のものですさに。私はここで混乱していますか?!とにかく、まずは<? php phpinfo ?>を実行し、mysql*の下にConfigurationという見出しの下で検索してください。このようなことが表示されない場合は、php-mysqlをインストールまたは有効にしていないことを意味します。だから、最初のバージョンについてとても心配、phpすでにインストールされているに応じて、php-mysqlをインストールしますphp-mysql

sudo apt get install php-mysql

このコマンドをインストールしません!!。

は、その後、最終的に再起動し

extension=msql.so 

msql.so/usr/lib/php/<timestamp_folder>に存在していることを確認ライン、ELSE

extension=path/to/msql.so 

をアンコメントphp.iniファイルで、UNIX固有のソリューションが来ますapachemysqlのサービスが表示され、今度はmysqlセクションが表示されます。 Configrationsの見出しをphpinfo page

0

私が作業していたプロジェクトはphp5.6で開発され、インストール後にこのプロジェクトはphp7.1で実行できないため、このエラーが発生しました。

nginxディレクトリ(/ etc/nginx /)には、ubuntu/nginxでVagrantを使用している人のために、「sites-available」という名前のディレクトリがあります。このディレクトリには、迷彩マスキン。私の場合はhomestead.appだった。このファイル内

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

のようなものがありますが、その特定のサイトのための希望にPHPのバージョンを変更することができますという行があります。

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

これが誰にも役立つことを願っています。おかげさまで

4

私はまた、未定義の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. 

これがあなたに役立つことを願っています。 この解決策は私のために正しく機能しています。

+0

あなたのコードplsをフォーマットしてください。ここで質問に答える方法については、[ツアー](https://stackoverflow.com/help)をご覧ください。 – UmarZaii

関連する問題