Почему php curl не сохраняет cookie в моем cookiefile?

Я пытаюсь сохранить печенье в curl cookiejar. Я упростил свой код, но он не работает.

<?php

$cookie_file = './cookies.txt';

if (! file_exists($cookie_file) || ! is_writable($cookie_file)){
    echo 'Cookie file missing or not writable.';
    exit;
}//cookie_file is writable, so this is not the issue

$ch = curl_init (html_entity_decode("http://localhost/kiala_test/setcookie.php"));
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$output = curl_exec ($ch);
echo $output;
?> 

cookie посредством setcookie.в PHP

<?php 
$value = 'something from somewhere';
setcookie("TestCookie", $value);

?>

получил заголовок

HTTP / 1.1 200 OK дата: чт, 10 окт 2013 12:10: 37 GMT сервер: Апач/2.4.4 (х64) на PHP/5.4.12 х-питание-по по: PHP/5.4.12 набор-печенье: TestCookie=что-то+от + где-то длина контента: 0 тип контента: text / html

так testcookie в заголовке но мой cookiefile остается пустым. Что я делаю не так? что я могу сделать, чтобы этот пример сработал? спасибо!

2 ответов


при установке CURLOPT_COOKIEJAR, вы должны использовать абсолютный путь. Вы можете сделать это легко, используя:

curl_setopt ($ch, CURLOPT_COOKIEJAR, realpath($cookie_file) );

ссылки: нельзя использовать cookies в cURL PHP


As ссылка о CURLOPT_COOKIEJAR:

имя файла для сохранения всех внутренних файлов cookie, когда дескриптор закрыт, например, после вызова curl_close.

Итак, в вашем коде не используется curl_close.

использовать curl_close($ch); после curl_exec, для сохранения файлов cookie в jar-файле.