21

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

PHPはMySQLで動作するように構成/コンパイルされていると思いましたが、MySQL呼び出しを行うPHP Webページを読み込もうとすると、上記の致命的なエラーが発生します(Apacheエラーログに)。PHPは、Apacheとコマンドラインを介して、それ自体で問題なく動作します。

コマンドラインからphp-iを実行すると、すべてのMySQLの断片が表示されますが、phpinfo()を表示するページをロードすると、MySQLモジュールが表示されません。

また、php.iniで「extension = mysql.so」のコメントを外そうとしましたが、PHPは「PHPスタートアップ:ダイナミックライブラリをロードできません'/usr/lib64/php/modules/mysql.so'."(モジュールがそこにあるのに)」と文句を言います。しかし、私はそうではありません。その行のコメントを解除する必要があるかどうかを完全に確認します。[修正:記載されているエラーは実際にはタイプミスによるものでしたが、コマンドラインから実行すると、モジュールが既にロードされていることが示されます。PHPから次のような警告があります。そう言う。]

SELinuxも無効にしました。Apacheを何度も停止/再起動しました。違いが生じた場合に備えて、yummedMySQL-Devel。そして、それは、他のすべての可能なことのようです。

コマンドラインから小さなPHPテストスクリプトを実行してMySQLデータベースにアクセスすると、問題なく動作するため、PHPはMySQLを認識しますが、Apacheで実行すると、MySQLが存在することすらわかりません。

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

本当に必要な場合は、PHPを再インストールする必要があります。誰かが、MySQLサポートを使用して構成/コンパイルする適切な方法を示して、Apacheで動作させることができる場合は、PHPを再インストールする必要があります。既存のインストールを機能させるため。

4

7 に答える 7

3

私はこれと同じ問題を抱えていたので、mysql および mysqli 拡張機能をロードするには libmysql.dll が必要であると書かれたphp マニュアルを参照する必要がありました。C:\windows\system32 (windows 7) で検索しましたが見つからなかったので、ここからダウンロードして C:\windows\system32 に配置しました。Apacheを再起動したところ、すべて正常に機能しました。理解するのに3日かかりました、それが役に立てば幸いです。

于 2013-07-14T09:44:04.463 に答える
-1

Apache モジュールの PHP バージョンは、いくつかの奇妙な理由で、php.ini ファイルを CLI バージョンとして取得していない可能性があります。

  • とWeb ページ経由.iniで異なるファイルの違い*php -iphpinfo()
  • 違いがない場合はmysql.so、ファイルの権限を確認しますが、Apacheはこれらをユーザー.iniとして解析すると思いますroot

ここで明確にするためphp.iniに、ファイルシステムでファイルを検索するのではなく、PHPが見ていると言っているものを見てください

于 2013-03-11T20:12:30.463 に答える
-4

mysqlデーモンが実行されている必要があります。

そうでない場合は、これを試してください:

#/etc/init.d/mysql start

またはこれ:

#service mysqld start

そして、ブート時に mysql を追加したい場合:

# chkconfig --add mysqld
# chkconfig -- level 235 mysqld on

はい、それでも機能しない場合は、次を試してください。

/etc/php/php.ini の次の行のコメントを外します

extension=mysqli.so
extension=mysql.so

'/usr/lib64/php/modules/msql.so' の上の投稿を確認してください。mysql.soである必要があります(タイプミスの場合は無視してください...)

于 2013-03-11T19:17:27.197 に答える