mic*_*jnr 3 php php-curl php-7
我正在构建一个scrape脚本来从网站中提取一些信息,并在测试时我不断收到以下错误:
PHP警告:curl_setopt_array():数组键必须是CURLOPT常量或等效的整数值
它指向我的代码中的以下行:
curl_setopt_array($ch, $curlOptions);
Run Code Online (Sandbox Code Playgroud)
现在$ch来自:
$ch = curl_init($url);
Run Code Online (Sandbox Code Playgroud)
并$url设置为这样(URL是故意的,因为我正在处理因尝试打开网站而产生的错误,如果它不存在):
$url = "https://www.kjsdsajlksajksajdklsadajklda.com";
Run Code Online (Sandbox Code Playgroud)
$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,
);
Run Code Online (Sandbox Code Playgroud)
我$curlOptions在测试时删除了块,当它被删除时我没有收到错误.但是,注释掉数组的不同元素并不能解决问题,并且错误仍然存在.我已经更改了我使用的URL,但没有任何区别.我也改变的任何实例true或false以1与0分别这也不做了一个差异.
所以我真的有点卡住了.我正在使用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
Run Code Online (Sandbox Code Playgroud)
到底发生了什么?我使用PHP 7编写的代码(应该与PHP 5一起使用)是否存在兼容性问题,还是存在更明显或更简单的问题?
cet*_*ver 12
你使用strings('CURLOPT_RETURNTRANSFER')而不是constants(CURLOPT_RETURNTRANSFER)
var_dump(CURLOPT_RETURNTRANSFER, 'CURLOPT_RETURNTRANSFER');
// output
int 19913
string 'CURLOPT_RETURNTRANSFER'
Run Code Online (Sandbox Code Playgroud)