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

PHP中使用cURL创建HTTP请求时出现变量未定义等错误的解决方法

修复PHP cURL请求的错误问题

让我一步步帮你排查和修复这两个问题:

一、第二段代码的语法错误(Undefined variable: curl)

你第二段代码的末尾多了一个多余的},这个语法错误导致PHP无法正确解析前面的代码,变量$curl的初始化被跳过,从而出现未定义变量的警告。

修复后的代码:

<?php
// 开启开发环境错误显示,方便排查问题
ini_set('display_errors', 1);
error_reporting(E_ALL);

$curl = curl_init();
curl_setopt_array($curl, array(
 CURLOPT_URL => 'http://exmaple.com:80/', // 补充HTTP协议头
 CURLOPT_RETURNTRANSFER => true,
 CURLOPT_ENCODING => '',
 CURLOPT_MAXREDIRS => 10,
 // 去掉无效的Basic认证头,若需要认证请补充base64编码的"用户名:密码"
 CURLOPT_HTTPHEADER => array('Content-Type:application/json'),
 CURLOPT_TIMEOUT => 0,
 CURLOPT_FOLLOWLOCATION => true,
 CURLOPT_POST => 1,
 // 用json_encode生成规范JSON,避免手动写格式出错
 CURLOPT_POSTFIELDS => json_encode(array("M" => "", "A" => "")),
 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
));

$response = curl_exec($curl);

// 添加错误处理,请求失败时输出错误信息
if(curl_errno($curl)){
    echo 'cURL错误:' . curl_error($curl);
} else {
    echo $response;
}

// 记得关闭curl资源
curl_close($curl);
die();
?>

二、第一段代码页面空白的问题

页面空白是因为cURL请求失败,但你没有添加错误处理逻辑,所以没有任何输出。主要有几个核心问题需要修复:

问题点说明:

  1. URL缺少协议头:exmaple.com:80/必须补充http://或https://,否则curl无法识别合法的请求地址。
  2. 无效的Authorization头:Authorization: Basic后面需要跟上base64编码的用户名:密码(比如Authorization: Basic ' . base64_encode("admin:123456")),如果不需要认证可以直接去掉这个头。
  3. POST请求参数冲突:同时设置CURLOPT_POST => 1和CURLOPT_CUSTOMREQUEST => 'POST'会导致逻辑冲突,保留CURLOPT_POST即可。
  4. 缺少错误处理:请求失败时没有输出错误信息,导致页面空白。
  5. 手动编写JSON易出错:建议用json_encode()生成标准JSON字符串,避免手动换行、引号带来的格式问题。

修复后的test方法代码:

public function test(){
 // 开发环境开启错误显示
 ini_set('display_errors', 1);
 error_reporting(E_ALL);

 $curl = curl_init();
 curl_setopt_array($curl, array(
 CURLOPT_URL => 'http://exmaple.com:80/', // 补充协议头
 CURLOPT_RETURNTRANSFER => true,
 CURLOPT_ENCODING => '',
 CURLOPT_MAXREDIRS => 10,
 // 修复认证头:要么移除,要么补充正确的base64凭证
 CURLOPT_HTTPHEADER => array('Content-Type:application/json'),
 CURLOPT_TIMEOUT => 0,
 CURLOPT_FOLLOWLOCATION => true,
 CURLOPT_POST => 1,
 // 用json_encode生成规范的POST数据
 CURLOPT_POSTFIELDS => json_encode(array(
     "M" => "",
     "A" => ""
 )),
 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
 // 移除冲突的CURLOPT_CUSTOMREQUEST配置
));

$response = curl_exec($curl);

// 添加错误处理逻辑
if(curl_errno($curl)){
    echo 'cURL请求失败:' . curl_error($curl);
} else {
    echo $response;
}

// 关闭curl资源
curl_close($curl);
die();
}

额外提示:

  • 开发环境建议开启错误显示,能快速定位隐藏的代码问题。
  • 确认目标地址exmaple.com是否可以正常访问,或者替换为真实的测试接口地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 16:02:32