我正在尝试对本机上的localhost nodejs express服务器进行卷曲。快递计算机正在运行并且正在侦听端口(4001),并且出于调试目的,我禁用了防火墙。
在我的机器上,我有卷曲为7.61.1的php 7.2.13
但是我正在尝试将我的docker容器php 5.6.40与curl 7.35.0一起使用
当我使用php7和较新的curl打电话时,我得到了答复。
当我使用php5和较旧的curl调用时,出现“连接被拒绝”的信息:
* Hostname was found in DNS cache
* Hostname in DNS cache was stale, zapped
* Trying 127.0.0.1...
* connect to 127.0.0.1 port 4001 failed: Connection refused
* Trying ::1...
* Immediate connect fail for ::1: Cannot assign requested address
* Failed to connect to localhost port 4001: Connection refused
* Closing connection 1
这是curl的php代码,两者均相同:
$curl = curl_init();
$verbose = fopen('php://temp', 'w+');
curl_setopt_array($curl, array(
CURLOPT_PORT => "4001",
CURLOPT_URL => "http://localhost:4001/api/client/set/141b2cab9352c9adb0edf708dab8937e?=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_VERBOSE =>true,
CURLOPT_STDERR => $verbose,
CURLOPT_HEADER =>1,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_SSLVERSION =>4,
CURLOPT_CUSTOMREQUEST => "POST",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err."<br><br>";
rewind($verbose);
$verboseLog = stream_get_contents($verbose);
echo "Verbose information:<br><pre>", htmlspecialchars($verboseLog), "</pre><br>";
}
echo "r:$response<br>";
我试图告诉快递服务器在所有端口上进行侦听,但这没有用:
server.listen(process.env.HTTP_PORT,'0.0.0.0');
我认为问题仅在开发上,因为真正服务器的卷曲正在生产中
有什么办法可以修复php5.6吗?我现在无法更改为php7,因为生产仍在使用php5.6。
答案 0 :(得分:0)
我的问题不是curl版本,这是因为我docker容器以桥接网络模式连接到主机,因此它无法使用主机的“ localhost”。要访问在主机上运行的服务,我需要使用主机ip(我从“ ipconfig”获得)。