常量CURLOPT_POST未定义的使用 - 假定为'CURLOPT_POST'。

16

我正在使用Kohana 3.2进行cURL请求,但是当它尝试访问CURLOPT_POST常量时,出现以下错误:

Use of undefined constant CURLOPT_POST - assumed 'CURLOPT_POST'

从 Kohana 3.2 system/classes/kohana/request/client/curl.php 文件中

public function _set_curl_request_method(Request $request, array $options)
{
    switch ($request->method()) {
        case Request::POST:
            $options[CURLOPT_POST] = TRUE;
            break;
        case Request::PUT:
            $options[CURLOPT_PUT] = TRUE;
            break;
        default:
            $options[CURLOPT_CUSTOMREQUEST] = $request->method();
            break;
    }
    return $options;
}

我的应用程序代码:

$request = Request::factory($uri);
$request->query('key', $key);
$request->post($params);
$request->method(Request::POST);

// fails here
$response = $request->execute();

我已经测试了curl扩展的活动状态,使用以下命令:

if (in_array  ('curl', get_loaded_extensions()))
{
    echo '1';
}
else
{
    echo '0';
}

这里出现了什么问题?我正在使用Windows 7,PHP 5.4.12和Apache 2.4。


你的脚本中是否已经实际调用了curl函数之一?如果curl扩展不可用,这会使php出现“未定义函数curl_....”并退出。如果没有(或不确定),最好通过phpinfo()、extension_loaded('curl')等进行双重检查。 - VolkerK
我知道现在还很早,但是这不是未使用引号的数组键的预期行为吗? - Mattt
@MattThompson 这就是如何设置curl选项(请参阅手册 - kero
@LatheesanKanes 添加了应用程序代码。 - xylar
但在这个上下文中,它被用作由kohana库创建的数组的数组键... 它并没有直接用于设置选项。我理解curl的工作原理。 - Mattt
显示剩余7条评论
2个回答

18

首先,让我们通过检查服务器上是否安装了php-curl来进行确认。

请注意,这是原文的直译,因此可能不会很自然,但保留了所有的HTML标签和原意。
aptitude search php-curl

或者aptitude search php5.6-curl

如果还没有安装,让我们通过下面的命令进行安装:

sudo apt-get install php5.6-curl

这将不起作用,因为提问者明确说明他们使用的是较旧版本的PHP(5.4.12),这与php5.6-curl不兼容。在提供答案之前,请仔细阅读问题。此外,这个问题是2年前提出的,并且已经有了一个被接受的解决方案。请尽量避免通过回答来使问题重新浮现,除非该问题尚未被标记为已解决,或者你找到了一个截然不同而更好的替代方法 :) - Obsidian Age

5
我发现在C:\wamp\bin\php\php5.4.12\php.ini中,extension=php_curl.dll这一行被注释掉了,但在C:\wamp\bin\apache\Apache2.4.4\bin\php.ini中是激活的。
我发现在C:\wamp\bin\php\php5.4.12\php.ini中取消注释这一行可以解决我的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接