1
我是新來這裏寫的,但在過去幾年閱讀了很多答案,首先感謝:迄今爲止給予我的很多幫助!所以,這是什麼讓我瘋狂的今天,並無法找到答案的任何地方:php curl在命令行版本正在工作時被拒絕
我有一個Web服務(Openfire插件)和基於LAMP的後臺(在一個單獨的盒子),管理Openfire遠程。將Openfire遷移到新的(第三個)框後,後臺代碼停止工作。這裏是一個片段:
<?php
header("Content-Type: text/plain");
$url = "http://gbbackup.dyndns.org:9090/plugins/goldsteinAdmin/goldsteinadmin"; echo $url."\n";
$ch = curl_init($url); echo "handle: ".$ch."\n";
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, fopen('php://stdout', 'w'));
$result = curl_exec($ch); echo "Result: ".$result."\n";
if ($result === false) echo 'cURL error '.curl_errno($ch).': '.curl_error($ch)."\n";
print_r(curl_getinfo($ch));
curl_close($ch);
?>
捲曲的詳細輸出是:
* About to connect() to gbbackup.dyndns.org port 9090 (#0)
* Trying 81.183.210.206... * Connection refused
* couldn't connect to host
* Closing connection #0
現在奇怪的是,如果我通過命令行嘗試,它完美的作品:
[email protected]:~/public_html/gb$ curl -v "http://gbbackup.dyndns.org:9090/plugins/goldsteinAdmin/goldsteinadmin"
* About to connect() to gbbackup.dyndns.org port 9090 (#0)
* Trying 81.183.210.206... connected
* Connected to gbbackup.dyndns.org (81.183.210.206) port 9090 (#0)
> GET /plugins/goldsteinAdmin/goldsteinadmin HTTP/1.1
> User-Agent: curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6
> Host: gbbackup.dyndns.org:9090
> Accept: */*
>
< HTTP/1.1 200 OK
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< Set-Cookie: JSESSIONID=12e1urcewodgr;Path=/
< Content-Type: application/json;charset=ISO-8859-1
< Transfer-Encoding: chunked
<
{"type":"error","msg":"RequestNotAuthorised"}
* Connection #0 to host gbbackup.dyndns.org left intact
* Closing connection #0
可能是什麼PHP和命令行卷曲之間的區別?爲了測試連接本身,我已經刪除了所有花哨的附加組件,但是必須保留一些差異。
我做了一些測試,這裏的結果:
- PHP捲曲的其他網站(如google.com):工作
- 插入我自己的機器上的鏈接到瀏覽器:適用
- 通過PHP系統()測試命令行卷曲:不工作
- 我也想和tcpdump的差異,但另一方面中,在那裏我有root權限,PHP和命令行版本的作品
似乎只是這兩個盒子不喜歡彼此:-)
在此先感謝您的幫助!