Maison > développement back-end > tutoriel php > redhat下php连接mysql,命令行下没问题,网页出错。

redhat下php连接mysql,命令行下没问题,网页出错。

WBOY
Libérer: 2016-06-23 13:53:47
original
1014 Les gens l'ont consulté

大家帮忙看下。我在AWS上搭建php apache mysql 环境。
想把php apache和mysql分离开来。
服务器A只装php 和apache。以及mysql客户端
服务器B只装mysql。
同样的代码在命令行下能执行成功,并能查询,插入数据操作。
但是网页下面出错,提示:

Can't connect to MySQL server on '192.168.9.9' (13)
Copier après la connexion


代码如下:
<?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";   } ?>
Copier après la connexion

大家帮忙看下。是不是服务器A上必须安装mysql server版啊。


回复讨论(解决方案)

是不是限制了访问权限,只能本机访问?

我是两台服务器,一个是数据库服务器,一个是php,apache 服务器。只是在php,apache服务器上的命令行下能用。但是在浏览器里就不行了。

A机器能否ping通B机器?
还有就是B机器是否允许远程连接?

phpinfo  里  mysql扩展正常开启了?

root帐号远程权限开了么?

把运程权限分配给a机器ip,例:
GRANT select,insert,update,delete ON *.* TO root@"172.16.16.152" IDENTIFIED BY "youpassword";

人家在A机器上使用php 命令行是没问题的,数据库在B机器上,所以不是远程或权限的问题。

貌似以前碰到过类似问题,与apache有关,不记得怎么解决的了。

windows下的apache 网页访问这个脚本有问题么?

谢谢各位的回复,
windows下的apache的网页访问是什么意思?
因为代码都是基本代码,刚装好服务器测试用的。
所以我感觉代码没问题,毕竟命令行下是没问题的。php好像不存在跨平台的问题。

请6楼以上的看清楚,我命令行下脚本是正确的。

phpinfo  里  mysql扩展正常开启了?



扩展是正常的。phpinfo 显示enabled 的。

解决方法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 为 SELINUX=disabled



同时试试 修改my.cnf增加 client part:
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock 


解决方法1、:setsebool -P httpd_can_network_connect_db=1

解决方法2、:修改/etc/selinux/config SELINUX=enforcing 为 SELINUX=disabled



同时试试 修改my.cnf增加 client part:
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock 

除了解决方法1,另外两个都试过了。一个是不行,而解决方法2修改后,机器起不来了。。。解决方法1 可以了。。
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal