web-dev-qa-db-ja.com

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

MySQL(5.5.23 Community Server)、Apache(2.2)、およびPHP(5.3.13)Fedora 15マシン(64ビット)で実行しています。それぞれが問題なく動作します。彼ら自身。

PHPはMySQLで動作するように設定/コンパイルされたが、MySQLを呼び出すWebページをPHP上記の致命的なエラー(Apacheエラーログ内)PHPは、Apacheとコマンドラインで独自に動作します。

コマンドラインからphp -iを実行すると、すべてのMySQLビットとピースが十分に表示されますが、phpinfo()を表示するページをロードすると、MySQLモジュールは表示されません。

また、php.iniで「extension = mysql.so」のコメントを外してみましたが、PHPで「PHP Startup:Unable to load dynamic library '/usr/lib64/php/modules/mysql.so'."(モジュールが存在する場合でも)。しかし、その行をコメント解除する必要があるかどうかは完全にはわかりません。 [修正:記載されているエラーは実際にはタイプミスによるものですが、コマンドラインから実行すると、モジュールが既にロードされていることが示されます-PHPからの警告があります。]

また、SELinuxを無効にしました。 Apacheを何度も停止/再起動しました。何らかの違いが生じた場合に備えて、MySQL-Develを使いました。そして、可能性のある他のすべてのもの。

MySQLデータベースにアクセスするために、コマンドラインから少しPHPテストスクリプトを実行すると、問題なく動作します。したがって、PHPはMySQLについて認識しています、しかし、Apacheの下で実行する場合、MySQLが存在するという手がかりもないようです。

私はこの問題を解決するために何ヶ月も試行錯誤してきましたが、すべてを試したようですが、何もうまくいかないようです。

PHP本当に必要な場合、誰かがMySQLサポートで設定/コンパイルするための適切な方法を示すことができれば、それで動作するように再インストールする必要はありません。 Apacheは、理想的には、既存のインストールを機能させることを望んでいます。

どんな援助も事前に感謝します!

25
Cheddar

他の誰かがこれに直面した場合、それはPHPがmysqlクライアントライブラリにアクセスできない場合です。システムにMySQLサーバーがあることは正しい修正ではありません。 ubuntu(およびPHP 5)の修正:

Sudo apt-get install php5-mysql

クライアントをインストールしたら、ウェブサーバーを再起動する必要があります。 Apacheを使用している場合、以下が機能するはずです。

Sudo service Apache2 restart
63
andreimarinescu

PHP 5.5.0の時点で、mysql_connect()関数は廃止され、PHP 7

詳細は php documentation で見つけることができます:

見積もり:

警告
この拡張機能は、PHP 5.5.0で廃止され、PHP 7.0.0。で削除されました。代わりに、MySQLiまたはPDO_MySQL拡張機能MySQL:APIガイドの選択と関連するFAQを参照してください。この関数の代替手段は次のとおりです。
* mysqli_connect()
* PDO :: __ construct()

17
Tim Penner

これと同じ問題があり、mysqlおよびmysqli拡張モジュールを読み込むにはlibmysql.dllが必要だと言われた phpマニュアル を参照する必要がありました。 C:\ windows\system32(windows 7)で検索しましたが見つからなかったため、ダウンロードしました here をC:\ windows\system32に配置しました。 Apacheを再起動すると、すべてが正常に機能しました。理解するのに3日間かかったが、それが役立つことを願う。

2
che-azeh

どのように試合

Sudo yum install php-mysql

または

Sudo apt-get install php5-mysql

0
Rahim Khoja

ApacheモジュールPHPバージョンは、何らかの奇妙な理由で、php.iniファイルをCLIバージョンとしてピックアップしていない可能性があります。

  • ウェブページ経由で_.ini_とphpinfo()で異なる_php -i_ファイルの違い*
  • 違いがない場合は、_mysql.so_および_.ini_ファイルのパーミッションを調べますが、Apacheはこれらをrootユーザーとして解析すると思います

ここで本当に明確にするために、ファイルシステム上で_php.ini_ファイルを検索するのではなく、PHPがそれを見ていることを見て

0
James C