Я использую shell_exec () для выполнения вызова API Twitter.
shell_exec('curl -u user:password -d "id=3191321" http://api.twitter.com/1/twitterapi/twitterlist/members.xml');
Это прекрасно работает, когда я правильно аутентифицируюсь и ввожу число для идентификатора.
Но когда я пытаюсь вставить переменную ($ id), она облажается.
$addtolist = shell_exec('curl -u user:pw -d "id='.$id.'" http://twitter.com/username/twitterlist/members.xml');
Я пытался переключать типы цитат
$addtolist = shell_exec("curl -u user:pw -d 'id=$id' http://twitter.com/username/twitterlist/members.xml");
Я пытался использовать двойные кавычки и избегать их
$addtolist = shell_exec("curl -u user:pw -d \"id=$id\" http://twitter.com/username/twitterlist/members.xml");
Никто из них не работал.
Что я делаю не так?
EDIT: пуристы говорят, что я должен использовать встроенные в PHP методы curl, а не shell_exec. Это тоже не работает.
$ url = 'http://twitter.com/user/list/members.xml';
// Настройка и выполнение процесса curl
$ curl_handle = curl_init ();
curl_setopt ($ curl_handle, CURLOPT_URL, "$ url");
curl_setopt ($ curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt ($ curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ curl_handle, CURLOPT_POST, 1);
curl_setopt ($ curl_handle, CURLOPT_POSTFIELDS, "id = $ id");
curl_setopt ($ curl_handle, CURLOPT_USERPWD, "пользователь: pw");
$ buffer = curl_exec ($ curl_handle);
curl_close ($ curl_handle);
Возвращает bool (false) и корректно не обновляет рассматриваемый список Twitter (весь смысл упражнения)