我正在尝试使用 PHP 的 CURL 向服务器发出 GET 请求,但在这样做时遇到了一些困难。当我通过 PHP 发出请求时,我从外部服务器返回 500 错误。但是,如果我使用 bash curl 发出请求,或者在浏览器中访问 URL,它会成功。
我已经将 PHP 精简到了最基本的部分:
$url = 'http://example.com:8080/path/to/service?cmd=my_command&arg=example2.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
print_r(curl_getinfo($ch));
curl_close($ch);
如前所述,这会从 example.com 返回 500 错误。但是,如果我执行以下操作:
[me@host ~] curl "http://example.com:8080/path/to/service?cmd=my_command&arg=example2.com"
我返回了预期的 XML 文档。
是什么赋予了?它必须与 URL 的编码有关,就好像我将$url
var剥离http://example.com:8080
为 PHP CURL 请求现在以 200 响应。我尝试用 - 替换&
它%26
不起作用(我也不希望它,&
在 URL 中有效)。我已经尝试过使用 GET wierd results 建议 php curl 发送 vars的答案,但这也无济于事。
我在这里想念什么?我敢肯定这是一件简单得离谱的事情,但它正在逃避我。
谢谢!
编辑:我刚刚尝试在 Python 中执行此操作 - 只是为了看看发生了什么 - 它在那里工作正常:
import urllib2
r = urllib2.urlopen(theURL)
r.read()