You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

命令行curl可正常运行,PHP curl实现遇阻,寻求技术指导

问题分析与修正方案

你的PHP curl代码存在几个关键错误,导致无法正常工作,以下是修正后的代码及错误说明:

修正后的PHP代码

<?php 
$url = 'http://localhost:11434/api/chat';
$question = $_GET["q"];
$model = 'deepseek-r1:1.5b';

$data = array(
    "model" => $model, 
    "messages" => array(  
        array(
            "role" => "user",
            "content" => $question,                    
        )
    ),
);

$payload = json_encode($data);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);  
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 添加JSON内容类型头,告知服务器请求体格式
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($payload)
));

// 捕获curl执行错误
if($result = curl_exec($ch)){
    $response = json_decode($result, true);
    // 数组不能直接echo,转成JSON字符串输出
    echo json_encode($response);
} else {
    echo 'Curl错误: ' . curl_error($ch);
}

curl_close($ch);
?>

错误点说明

  • URL格式错误:你把命令行curl的-d参数加到了URL里,PHP curl的URL只需要接口地址本身,不需要命令行参数。
  • 缺少必要请求头:发送JSON格式的POST数据时,必须通过CURLOPT_HTTPHEADER设置Content-Type: application/json,否则服务器无法识别请求体格式,会解析失败。
  • 输出方式错误:json_decode($result, true)返回的是数组,直接echo $response只会输出Array,需要用json_encode转成JSON字符串才能正确输出响应内容。
  • 可选优化:添加curl错误捕获,方便排查请求失败原因;设置Content-Length头可帮助服务器更高效处理请求。

内容的提问来源于stack exchange,提问作者Dango

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:17:33