Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在cronjob中运行curl时,在何处存储cookie?_Php_Cookies_Crontab - Fatal编程技术网

Php 在cronjob中运行curl时,在何处存储cookie?

Php 在cronjob中运行curl时,在何处存储cookie?,php,cookies,crontab,Php,Cookies,Crontab,我有一个PHP脚本,可以使用curl登录到一个网站。当我在浏览器中运行脚本时,脚本会正常登录。当我通过cronjob运行它时,它不会登录,因为cookie没有存储在我期望的位置 我如何储存饼干 这是脚本的相关部分。在此之前,定义URL($URL)和登录数据($post_字符串) 问题经过编辑,以反映以下Wrikken和Colin Morelli的评论。谢谢你们两位 从命令行运行脚本时,$\u SERVER['DOCUMENT\u ROOT']变量将为空(毕竟,没有服务器,也没有文档根) 这意

我有一个PHP脚本,可以使用curl登录到一个网站。当我在浏览器中运行脚本时,脚本会正常登录。当我通过cronjob运行它时,它不会登录,因为cookie没有存储在我期望的位置

我如何储存饼干


这是脚本的相关部分。在此之前,定义URL($URL)和登录数据($post_字符串)



问题经过编辑,以反映以下Wrikken和Colin Morelli的评论。谢谢你们两位

从命令行运行脚本时,
$\u SERVER['DOCUMENT\u ROOT']
变量将为空(毕竟,没有服务器,也没有文档根)

这意味着
$\u服务器['DOCUMENT\u ROOT']./verwaltung/cookie.txt'
最终将解析为
'/verwaltung/cookie.txt'
(以及PHP通知)。此目录可能不存在(它直接位于根文件系统中;除了默认的Unix系统目录之外,不应该有任何其他目录),并且您的脚本将无法创建cookie文件(随后,不会保存cURL设置的任何cookie)


例如,您可以使用
(当前目录)、
/tmp
(所有用户都应该可以编写,也应该可读!)、
\uu目录(PHP脚本所在的目录),而不是
$\u服务器['DOCUMENT\u ROOT']
或任何其他不依赖于服务器变量的目录。

什么是
$getit
的实例类?它是否有
\uuu toString()
方法。如果是,那么
\uu toString()
返回什么?等等,等等。我们缺少一些关键组件。由于可用信息有限:您可能会获得另一个页面(检查
$getit
)。问题是为什么…@ColinMorelli我添加了更多的代码。有帮助吗?@Wrikken我检查了$getit(通过将输出邮寄给我自己),它包含我需要解析的页面,没有问题。脚本在preg\u match\u all之前都很好。@您确定得到了想要的页面吗?因为我可以保证
$\u SERVER['DOCUMENT\u ROOT']
不是您在命令行中运行时在curl类中所期望的那样;)谢谢你,赫尔姆伯特。我详细说明了现有文件的绝对路径,现在它可以工作了。
class curl {
    function __construct($use = 1) {
        $this->ch = curl_init();
        if($use = 1) {
            curl_setopt ($this->ch, CURLOPT_POST, 1);
            curl_setopt ($this->ch, CURLOPT_COOKIEJAR, $_SERVER['DOCUMENT_ROOT'].'/verwaltung/cookie.txt');
            curl_setopt ($this->ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT'].'/verwaltung/cookie.txt');
            curl_setopt ($this->ch, CURLOPT_FOLLOWLOCATION, 1);
            curl_setopt ($this->ch, CURLOPT_RETURNTRANSFER, 1);
        } else {
            return 'There is the possibility, that this script wont work';
        }
    }
    function first_connect($loginform,$logindata) {
        curl_setopt($this->ch, CURLOPT_URL, $loginform);
        curl_setopt ($this->ch, CURLOPT_POSTFIELDS, $logindata);
    }
    function store() {
        $store = curl_exec ($this->ch);
    }
    function execute($page) {
        curl_setopt($this->ch, CURLOPT_URL, $page);
        $this->content = curl_exec ($this->ch);
    }
    function close() {
        curl_close ($this->ch);
    }
    function __toString() {
        return $this->content;
    }
}

$getit = new curl();
$getit->first_connect($url, $post_string);
$getit->store();
$getit->execute($url);
$getit->close();