在过去的十五天里,我正在努力解决这个问题。我有一个连接到远程 mysql 服务器的 PHP 应用程序,但该应用程序不能直接访问远程 mysql 服务器,它必须通过 socks 代理连接。请任何人都可以帮我解决这个问题。
提前致谢。
我想看看其他人是否已经这样做了,但我想没有。我为 PHP 制作了一个到 SOCKS4a 的接口。这里是。
function fsocks4asockopen($proxyHostname, $proxyPort, $targetHostname, $targetPort)
{
$sock = fsockopen($proxyHostname, $proxyPort);
if($sock === false)
return false;
fwrite($sock, pack("CCnCCCCC", 0x04, 0x01, $targetPort, 0x00, 0x00, 0x00, 0x01, 0x00).$targetHostname.pack("C", 0x00));
$response = fread($sock, 16);
$values = unpack("xnull/Cret/nport/Nip", $response);
if($values["ret"] == 0x5a) return $sock;
else
{
fclose(sock);
return false;
}
}
它不完全是任何类型的最终产品,但它允许您从 PHP 中打开与 socks4a 代理的连接,并返回与 fsockopen 相同类型的套接字
我认为您需要通过 SOCKS 代理设置端口转发。使用这个你打开一个本地端口(例如在 3306 上),它通过 SOCKS 代理将连接转发到远程主机和端口(数据库主机:3306)。您在后台运行它并使 PHP 连接到 localhost:3306(然后将其转发/隧道到 databasehost:3306)