"Array keys must be CURLOPT constants or equivalent integer values" 在 PHP 中使用 curl_setopt_array() 7

"Array keys must be CURLOPT constants or equivalent integer values" using curl_setopt_array() in PHP 7

我正在构建一个抓取脚本以从网站中提取一些信息,但在测试时我不断收到以下错误:

PHP Warning: curl_setopt_array(): Array keys must be CURLOPT constants or equivalent integer values

它指向我代码中的以下行:

curl_setopt_array($ch, $curlOptions);

现在 $ch 来自:

$ch = curl_init($url);

$url 是这样设置的(URL 是故意的,因为我正在处理因尝试打开网站而产生的错误,如果它不存在):

$url = "https://www.kjsdsajlksajksajdklsadajklda.com";

$curlOptions设置在这里:

    $curlOptions = array(
        'CURLOPT_RETURNTRANSFER' => true,
        'CURLOPT_HEADER'         => true,
        'CURLOPT_FOLLOWLOCATION' => true,
        'CURLOPT_ENCODING'       => "",
        'CURLOPT_AUTOREFERER'    => true,
        'CURLOPT_CONNECTTIMEOUT' => 120,
        'CURLOPT_TIMEOUT'        => 120,
        'CURLOPT_MAXREDIRS'      => 10,
        'CURLINFO_HEADER_OUT'    => true,
        'CURLOPT_SSL_VERIFYPEER' => false,
        'CURLOPT_HTTP_VERSION'   => 'CURL_HTTP_VERSION_1_1',
        'CURLOPT_COOKIE'         => $cookiesJar,
        'CURLOPT_USERAGENT'      => $userAgent,
    );

我在测试时删除了 $curlOptions 块,当它被删除时我没有收到错误。但是,注释掉数组的不同元素并不能解决问题,错误仍然存​​在。我也更改了我使用的 URL,但没有任何区别。我还分别将 truefalse 的任何实例更改为 10,这也没有什么不同。

所以我真的有点卡住了。我在使用 PHP 7 的 Debian 8 系统上开发这个,版本输出在这里:

PHP 7.0.16-1~dotdeb+8.1 (cli) ( NTS ) 
Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.16-1~dotdeb+8.1, Copyright (c) 1999-2017, by Zend Technologies

到底是怎么回事?我编写的代码(应该与 PHP 5 一起使用)与 PHP 7 是否存在兼容性问题,或者是否存在更明显或更简单的问题?

您使用字符串 ('CURLOPT_RETURNTRANSFER') 而不是常量 (CURLOPT_RETURNTRANSFER)

var_dump(CURLOPT_RETURNTRANSFER, 'CURLOPT_RETURNTRANSFER');
// output
int 19913
string 'CURLOPT_RETURNTRANSFER'