Команда копирования Curl в PHP

#php #curl

#php #curl

Вопрос:

Я пытаюсь скопировать

 curl -c cookie_jar -H "Content-Type: application/json" -d '{"username" : "admin", "password" : "admin"}' http://jira:8080/rest/auth/latest/session
  

в PHP, но, похоже, я не могу заставить его работать.

У меня есть

 curl_setopt($curl,CURLOPT_URL, $loginUrl );
curl_setopt($curl,CURLOPT_POST, true );
curl_setopt($curl,CURLOPT_POSTFIELDS, '{"username" : "admin", "password" : "admin"}');
curl_setopt($curl,CURLOPT_COOKIEJAR, '/tmp/cookiejar' );
curl_setopt($curl, CURLOPT_HTTPHEADERS,array('Content-Type: application/json')); 
curl_exec( $curl );
  

Любая помощь?

Комментарии:

1. Это очень помогло бы (и, возможно, даже решило проблему), если бы вы могли публиковать HTTP-запросы, сгенерированные двумя вызовами (вы можете использовать wireshark для их захвата)

2. Верно, это был бы удаленный сервер Linux без корневых возможностей. Есть ли метод, отображающий, какова конечная результирующая команда curl в php?

3. Если ваша машина доступна с этого удаленного сервера, вы можете, возможно, установить целевой URL на свой собственный IP-адрес компьютера и видеть, как эти запросы поступают, а не видят, как они уходят.

Ответ №1:

На самом деле вам действительно нужна опция CURLOPT_COOKIEFILE . COOKIEJAR определяет, куда записывать новые файлы cookie. COOKIEFILE предназначен для загрузки существующих файлов cookie в CURL. Ваш эквивалент PHP прямо сейчас не отправляет никаких файлов cookie — он только записывает их. Добавьте это, и все должно быть готово:

 curl_setopt($curl,CURLOPT_COOKIEFILE, '/tmp/cookiejar' );
                                ^^^^---the big difference.