我正在创建一个库,允许用户在发出请求之前动态添加/删除cURL选项。 foreach循环如下所示:
$ch = curl_init($url);
// Cycle through each option and set them
foreach($setup['curl_options'] as $option => $value)
{
echo '<p>' . $option . ' = ' . $value . '</p>';
curl_setopt($ch, $option, $value);
}
数组键/值在段落中正确显示,但是当将值添加到curl_setopt时,我收到错误:
curl_setopt()
期望参数2为long,给定字符串。
我在这里做错了什么?
答案 0 :(得分:1)
第二个参数(您的$option
)必须是常量值。
这里http://php.net/manual/en/function.curl-setopt.php您定义了所有可用的常量。
如果您已经使用了constans值,则应将其解析为(long)
类型。
如果您只有该常量的名称,请使用constant($option)
但请确保值也是大写且正确。
答案 1 :(得分:1)
curl_setopt($ch, $option, $value);
假设$option
是'CURLOPT_HEADER'。您的代码归结为:
curl_setopt($ch, 'CURLOPT_HEADER', $value);
常量的名称现在是一个字符串,而不是实际的常量。您需要做的是在构建时存储常量在数组中表示的值:
$setup['curl_options'][] = array('CURLOPT_HEADER', true); // wrong
$setup['curl_options'][] = array(CURLOPT_HEADER, true); // right
答案 2 :(得分:0)
尝试
curl_setopt($ch, constant($option), $value);