ホームページ >バックエンド開発 >PHPチュートリアル >Redhat環境下でのPHPはmysqlに接続します。コマンドラインでは問題ありませんが、Webページではエラーが発生します。

Redhat環境下でのPHPはmysqlに接続します。コマンドラインでは問題ありませんが、Webページではエラーが発生します。

WBOY
WBOYオリジナル
2016-06-23 13:53:471017ブラウズ

ぜひご覧ください。 AWS 上に php apache mysql 環境をセットアップしました。
php apacheとmysqlを分離したいです。
サーバー A には php と apache のみがインストールされています。そして、mysql クライアント
サーバー B には mysql のみがインストールされています。
同じコードをコマンドラインで正常に実行でき、データ操作のクエリと挿入を行うことができます。
しかし、Web ページの下部にエラーがあり、プロンプトは次のとおりです:

Can't connect to MySQL server on '192.168.9.9' (13)


コードは次のとおりです:
<?php//php phpinfo();$link = mysql_connect("192.168.9.9","root","12345") or die("can't connect mysql".mysql_error());mysql_select_db("wtest",$link) or die ('Can\'t use foo : ' . mysql_error());;$resx = mysql_query("insert into west values(".rand(0,9999).")");$res = mysql_query("show variables like 'socket'");//$res = mysql_query("select * from west");//echo mysql_result($res,1);while($row=mysql_fetch_array($res)) {//       $return[] = $row;echo $row[0]."<br>\n";   } ?>

見てみるのを手伝ってください。サーバー A に mysql サーバーのバージョンをインストールする必要がありますか?


ディスカッション(解決策)への返信

アクセス権限が制限されており、ローカルでのみアクセスできますか?

私には 2 つのサーバーがあり、1 つはデータベース サーバー、もう 1 つは php および Apache サーバーです。 php および Apache サーバーのコマンド ラインからのみ使用できます。しかし、ブラウザでは機能しません。

マシン A はマシン B に ping できますか?
また、マシン B はリモート接続を許可しますか?

mysql 拡張機能は phpinfo で通常有効になっていますか?

root アカウントのリモート権限は有効ですか?

マシン IP に幸運の権限を割り当てます。例:
GRANT select、insert、update、delete ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword"

マシン A で php コマンドを使用します。データベースはマシン B 上にあるため、リモート性や権限の問題ではありません。

Apache に関連して、以前にも同様の問題に遭遇したようですが、解決方法を思い出せません。

Windows で Apache Web ページからこのスクリプトにアクセスすることに問題はありますか?

ご返信ありがとうございます。
Windows での Apache Web アクセスとは何を意味しますか?
コードはすべて基本的なコードであるため、サーバーはテストのためにインストールされただけです。
結局のところ、コードには問題がないように感じます。 PHP にはクロスプラットフォームの問題はないようです。

6 階以上にいる場合は、私のコマンドラインの下にあるスクリプトは正しいので、よく読んでください。

mysql 拡張機能は phpinfo で通常有効になっていますか?



拡張は正常です。 phpinfo は有効になっていると表示されます。

解決策 1: setsebool -P httpd_can_network_connect_db=1

解決策 2: /etc/selinux/config SELINUX=enforcing を SELINUX=disabled に変更します

解決策 1: setsebool -P httpd_can_network_connect_db=1

解決策 2 : /etc を変更します/selinux/config SELINUX=enforcing to SELINUX=disabled



また、my.cnf を変更してクライアント部分を追加してみてください:
[client]
port = 3306
ソケット = /var/lib/mysql /mysql.sock


解決策 1: setsebool -P httpd_can_network_connect_db=1

解決策 2: /etc/selinux/config SELINUX=enforcing を SELINUX=disabled に変更します



cnf にクライアント部分を追加します:
[client] を同時に試してください。
port = 3306
ソケット = /var/lib/mysql/mysql.sock

解決策 1 に加えて、他の 2 つを試しました。 1 つは機能せず、解決策 2 を変更するとマシンが起動できなくなります。 。 。解決策 1 は問題ありません。 。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。