Apache PHP脚本无法连接到远程数据库/ ODBC / MySQL,但可以从命令行工作

时间:2012-11-15 19:13:41

标签: php windows apache odbc

将Windows Vista系统与Apache 2.2和PHP 5配合使用。

我有一个测试与各种ODBC和MySQL数据库的连接的脚本。 当脚本从浏览器窗口中加载的Apache运行时,它无法连接到任何远程ODBC或MySQL数据库。本地数据库工作正常。套接字连接也不起作用。

当我从命令提示符运行时,所有连接都正常。

在ODBC控制面板中测试连接时,它们也可以正常工作。我们网络上不同系统上的其他应用程序可以连接到这些数据库。

此外,我可以从安装在Windows下安装的Apache的浏览器窗口中运行此脚本,该窗口位于远程位置的另一个系统上。

Windows Apache服务器系统已禁用防火墙,但它位于网络防火墙/代理之后。虽然由于脚本在命令行中工作,所以我认为它不是防火墙问题。

我已经看过这方面的解决方案,但它们适用于Linux系统,我找不到任何适用于Windows机器的方法。

这可以是php.ini或http.conf文件中的一些设置吗?这是一些Windows设置吗?

这是代码

$lmSock = fSockOpen('www.server.com',80, $errno, $errstr, 30);
if(!$lmSock) {
echo("Can't open Remote socket<br />\n");
}
else {
echo("Remote Socket Success<br />\n");
}    

$odbcConn = odbc_connect('remote.mysql','','');
if(!$odbcConn) {
    echo("Cannot Connect To ODBC remote.mysql Server<br />\n");
}
else {
  echo("ODBC remote.mysql Connection success<br />\n");
}

$odbcConn = odbc_connect('local.sql','','');
if(!$odbcConn) {
    echo("Cannot Connect To ODBC local.sql Server<br />\n");
}
else {
  echo("ODBC local.sql Connection success<br />\n");
}

$toyConn = odbc_connect('remote.sql','','');
if(!$toyConn) {
    echo("Cannot Connect To ODBC remote.sql Server<br />\n");
}
else {
  echo("ODBC remote.sql Connection success<br />\n");
}

$mysqlConn = mysql_connect('server.address','login','pass');
if(!$mysqlConn) {
    echo("Cannot Connect To MYSQL server.address Server<br />\n");
}
else {
  echo("MYSQL server.address Connection success<br />\n");
}

2 个答案:

答案 0 :(得分:0)

我要检查的第一件事是确保您的连接没有被Windows防火墙阻止。尝试暂时禁用它以进行测试。

Turn Windows Firewall on or off

如果这没有帮助,您可能想尝试下载WAMP以查看您的安装是否有问题。我不是建议你更换现有的安装(虽然你可能想要它可以工作),我建议你试着确定安装或操作系统是否有问题。

WAMP Download

答案 1 :(得分:0)

问题是我们公司的防火墙。 (Microsoft ISA Server 2000)。

此防火墙使用安装在我们内部系统上的实用程序(ISA客户端),包括运行它的服务器。

在我看来,命令行PHP脚本和ODBC控制面板通过此客户端工作。不幸的是由于某些原因Apache没有。

通过使用MySQL代理应用程序解决了这个问题,它将远程数据库镜像到本地IP地址。代理应用程序从命令行运行,似乎与防火墙客户端一起使用。