我正在使用远程数据库在PHP下开发Web应用程序,其中我有以下测试脚本:
try {
$dbh = new PDO('mysql:host=XXX.XXX.XXX.XXX;dbname=db_app;', $user, $password);
$date = ($dbh->query('SELECT NOW()');
print_r($date);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
exit();
当我运行它时,我得到以下输出:
错误!:SQLSTATE [HY000] [2003]无法在&#39; 10.16.50.87&#39;上连接到MySQL服务器(60)
我仍然可以使用MySQL工作台和命令行界面连接到目标数据库。
从this question我得到远程服务器配置&#34;可能是&#34;问题。但是,我们有一个兄弟&#34; PHP应用程序连接到同一台服务器没有问题,唯一不同的是两者是用户名和密码,甚至在我的应用程序上使用&#34;兄弟&#34; PHP应用程序凭据,显示相同的错误。所以似乎只有我的PHP似乎有问题。
我在PHP 5.5.3上运行测试,目标服务器正在运行MySQL 5.5 我的应用程序和Brother应用程序都在Staging Server A上运行,两者都应该连接到Staging Server B中的MySQL.Brother应用程序也是用PHP编写的,能够连接,但我的不是。我猜它可能是一个与MySQL相关的PHP配置。
我的应用程序使用PDO
,兄弟应用程序使用
mysqli
。
兄弟应用程序在与我的应用程序相同的服务器上运行, 并连接到同一目标服务器。
任何帮助都将不胜感激。
答案 0 :(得分:5)
对我而言,SELinux造成了这些问题:
[root@server ~]# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 24 Policy from config file: targeted [root@server ~]# setenforce 0 [root@server ~]# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: permissive Mode from config file: enforcing Policy version: 24 Policy from config file: targeted
setsebool -P httpd_can_network_connect=1