2011-06-17 75 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, '/'); 

cookie.txt的:(空)

当我运行curl.php时,我预计cookie会保存在cookies.txt中。
但没有任何反应。

这是什么问题,为什么它不工作?

回答

2

它是否有权将该目录中的文件与其执行的用户编写在该目录中?

如果没有收到cookie,则不会保存文件,您应该注意,当关闭句柄时,cookie会保存到文件中。

可能有必要给出保存cookie的文本文件的绝对路径,以确保知道它们在哪里结束。

+0

'curl_close($ ch)'没有帮助(我认为它无论如何关闭它)。但它实际上可以读取cookie。如果我添加'echo $ _COOKIE ['test']'它会回应它。所以,当脚本运行时,使用文件。但是当它结束时,它会被清空。它是如何应该的? – Qiao 2011-06-17 23:41:56

+0

我发现问题了。你应该使用绝对传球来获得coockies文件。否则它会保存在其他地方(它可能是?)。 – Qiao 2011-06-17 23:45:06

+0

@乔感谢您的评论,我有与路径相同的问题。谢谢 !! – dav 2013-05-18 10:41:59

1

根据PHP documentation

CURLOPT_COOKIEJAR - 一个文件来保存所有内部饼干当手柄是封闭的,例如名称在调用curl_close之后。

所以你需要拨打curl_close($ch)

+0

不同意。没有必要关闭卷曲来做任何事情。你可以打开0问题,但内存负载。 – erm3nda 2014-06-12 08:26:07

2

只需定义路径。

更改curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . 'cookies.txt');并应该工作。

并记住。 COOKIEJAR将保存cookie,并且COOKIEFILE将再次加载以与其一起工作。

快乐卷曲; P