Запрос PHP CURL GET возвращает 500, где исправление bash преуспевает

Я пытаюсь использовать CURL PHP, чтобы сделать запрос GET на сервер, и у меня возникают некоторые трудности с этим. Когда я делаю запрос через PHP, мне возвращается ошибка 500 с внешнего сервера. Однако, если я делаю запрос, используя завихрение bash, или посещаю 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); 

Как указано, это возвращает ошибку 500 из example.com. Однако, если я сделаю следующее:

 [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-адресе). Я попытался сделать то, что ответ на php curl посылает vars, используя GET wierd results , но это тоже не помогло.

Что мне здесь не хватает? Я уверен, что это нечто абсурдно простое, но это ускользает от меня.

Благодаря!

EDIT: Я только что попытался сделать это на Python – просто чтобы узнать, что произошло – и там все прекрасно работает:

 import urllib2 r = urllib2.urlopen(theURL) r.read() 

Solutions Collecting From Web of "Запрос PHP CURL GET возвращает 500, где исправление bash преуспевает"