php/doc-en

can we make curl_close() write CURLOPT_COOKIEJAR again?

Aberta

#2.239 aberto em 20 de jan. de 2023

 (10 comentários) (0 reação) (0 responsável)XML (882 forks)auto 404
Extension: curlStatus: Verifiedbuggood first issue

Métricas do repositório

Stars
 (596 estrelas)
Métricas de merge de PR
 (Mesclagem média 99d 23h) (90 fundiu PRs em 30d)

Description

Description

The following code:

<?php
declare(strict_types=1);
$ch = curl_init();
$cookiefile_handle = tmpfile();
$cookiefile = stream_get_meta_data($cookiefile_handle)['uri'];
curl_setopt_array($ch, array(
    CURLOPT_COOKIEFILE => $cookiefile,
    CURLOPT_COOKIEJAR => $cookiefile,
    CURLOPT_WRITEFUNCTION => function ($ch, $str) {
        // echo $str;
        return strlen($str);
    },
));
curl_setopt($ch, CURLOPT_URL, "https://example.com/");
curl_exec($ch);
var_dump(file_get_contents($cookiefile));
curl_close($ch);
var_dump(file_get_contents($cookiefile));

will, prior to PHP8.0.0 result in:

$ php7.4 test.php
string(0) ""
string(131) "# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.


and in >=8.0.0 result in

$ php8.2 test.php
string(0) ""
string(0) ""

which breaks scripts relying on curl_close() writing to CURLOPT_COOKIEJAR

PHP Version

PHP 8.0.0

Operating System

No response

Guia do colaborador