私はaptitude install php5-mysql
を実行し(そしてMySQL/Apache 2を再起動しました)、私はまだこのエラーを受けています:
致命的なエラー:21行目の/home/validate.php内の未定義関数mysql_connect()の呼び出し
phpinfo()
は/etc/php5/Apache2/conf.d/pdo_mysql.iniファイルが解析されたと言います。
まあ、これはあなたのチャンスです! PDO の準備ができているようです。代わりにそれを使ってください。
PHP MySQL拡張モジュールがロードされているかどうかを確認してみてください。
<?php
phpinfo();
?>
表示されない場合は、php.ini
ファイルに次の行を追加してください。
extension=php_mysql.dll
あなたが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()
誰かが docker php official images の問題を抱えてここに来た場合は、dockerコンテナの中に下記のコマンドを入力してください。
$ docker-php-ext-install mysql mysqli pdo pdo_mysql
詳細については、How to install more PHP extensions
セクションの上のリンクを参照してください(しかし、私にとっては少し難しいです…)。
または、このドキュメントが役に立つかもしれません。
すでにPHP7を使用している場合は、以前は非推奨となっていたmysql_*
関数が完全に削除されたので、代わりにPDO-functionsまたはmysqli_*
関数を使用してコードを更新する必要があります。
それが不可能な場合は、回避策として、古いmysql_*
関数をmysqli_*()
-で再作成する小さなPHP includeファイルを作成しました。機能: fix_mysql.inc.php
私は未定義の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
が必要です。
試してください:
<?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
Php.iniファイル
これを変える
;extension=php_mysql.dll
に
extension=php_mysql.dll
あなたのPHPインストールはMySQLサポートでコンパイルされていません。
Configureコマンド(php -i | grep mysql
)を確認してください。 '--with-mysql=shared,/usr'
のようなものが見えるはずです。
完全な手順については、 http://php.net/manual/ja/mysql.installation.php で確認できます。とはいえ、@wanovakが提案している解決策をお勧めします。
それでも、PDOを使用するにはMySQLのサポートが必要だと思います。
質問は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 page
のmysql
という見出しの下にあるConfigrations
セクションが表示されます。
私が作業していたプロジェクトは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バージョンを変更できます。
これはグーグルでしたが、どこを見て何を変えるべきかという簡単な答えを見つけることができませんでした。
これが誰にでも役立つことを願っています。ありがとう。