2011-06-17 3 views
1

Есть 3 файлов в одной папке:завиток - получить куки в файл

curl.php:

$ch = curl_init('http://localhost/url.php'); 

curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt'); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); 

curl_exec($ch); 

url.php:

setcookie('test', 'foo', time()+60*60*24, '/'); 

cookies.txt: (пусто)

Когда я запустил curl.php, я ожидаю, что файл cookie будет сохранен в cookies.txt.
Но ничего не происходит.

Что не так, почему это не работает?

ответ

2

Имеет ли разрешение на запись файла в этот каталог с пользователем, который он выполняет как?

Если cookie не был получен, файл не будет сохранен, и вы должны заметить, что файлы cookie сохраняются в файле, когда дескриптор закрыт.

Возможно, необходимо указать абсолютный путь текстового файла, в котором файлы cookie должны быть сохранены, чтобы быть уверенным, что вы знаете, где они находятся.

+0

'curl_close ($ ch)' не помогает (и я думаю, что все равно это закрывает). Но на самом деле он может читать файлы cookie. Если я добавлю 'echo $ _COOKIE ['test']', он повторяет это. Поэтому, пока скрипт запущен, используется файл. Но когда он заканчивается, он становится опустошенным. Так оно и должно быть? – Qiao

+0

Я нашел проблему. Вы должны использовать абсолютный проход для файла coockies. В противном случае он сохраняет где-то еще (где это может быть?). – Qiao

+0

@Qiao Спасибо за ваш комментарий, у меня была такая же проблема с путями. Благодаря !! – dav

1

По PHP documentation:

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

Для этого необходимо позвонить curl_close($ch).

+0

Не согласен с этим. Не нужно закрывать завиток, чтобы что-то с этим делать. Вы можете оставить открытым с 0 проблемой, но память загружается. – erm3nda

2

Просто укажите путь.

Изменить curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); на curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . 'cookies.txt'); и должно работать.

И помните. COOKIEJAR должен сохранять файлы cookie, а COOKIEFILE - загрузить снова, чтобы работать с ними.

Happy cURL; P

Смежные вопросы