Php 卷曲问题

Php 卷曲问题,php,drupal,curl,Php,Drupal,Curl,我遇到了一个奇怪的问题 我有几行简单的代码来调用api服务。当运行完Drupal时(在浏览器和cli中的php文件中),此代码运行得非常好,但当文件包含在Drupal中时(在引导之后),它会进行不同的操作 在正常情况下,API服务返回的结果有许多结果,但在Drupal中运行时,它只返回一个结果 我怀疑Drupal正在更改CURL使用的设置,这改变了API理解调用的方式 有人知道问题可能是由什么引起的吗 下面的代码来自我们在公共库中编写的api类文件。我们计划将来在其他PHP项目中使用这些 代码如

我遇到了一个奇怪的问题

我有几行简单的代码来调用api服务。当运行完Drupal时(在浏览器和cli中的php文件中),此代码运行得非常好,但当文件包含在Drupal中时(在引导之后),它会进行不同的操作

在正常情况下,API服务返回的结果有许多结果,但在Drupal中运行时,它只返回一个结果

我怀疑Drupal正在更改CURL使用的设置,这改变了API理解调用的方式

有人知道问题可能是由什么引起的吗

下面的代码来自我们在公共库中编写的api类文件。我们计划将来在其他PHP项目中使用这些

代码如下:

$params = array(
  'domain' => array(
    'www.domain1.com',
    'www.domain2.info',
    'www.domain3.in.th',
    'www.domain4.com',
    'www.domain5.in',
  )
);

$ch = curl_init();
curl_setopt_array($ch, array(
  CURLOPT_URL => 'http://api.postrank.com/v2/domain/activity?appkey=123456&format=json',
  CURLOPT_HEADER => false,
  CURLOPT_CONNECTTIMEOUT => 30,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_SSL_VERIFYPEER => false,
  CURLOPT_POST => true,
  CURLOPT_POSTFIELDS => http_build_query($params)
));
$response = curl_exec($ch);
$err = curl_errno($ch);
curl_close($ch);

print_r($response);
更新1: CURLOPT_VERBOSE和curl_getinfo的输出

CLI版本:

* About to connect() to api.postrank.com port 80 (#0) * Trying 75.101.138.238... * connected * Connected to api.postrank.com (75.101.138.238) port 80 (#0) > POST /v2/domain/activity?appkey=123456&format=json HTTP/1.1 Host: api.postrank.com Accept: */* Content-Length: 159 Content-Type: application/x-www-form-urlencoded http://api.postrank.com/v2/domain/activity?appkey=123456&format=json [content_type] => text/javascript [http_code] => 200 [header_size] => 172 [request_size] => 355 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.968 [namelookup_time] => 0 [connect_time] => 0.437 [pretransfer_time] => 0.437 [size_upload] => 159 [size_download] => 998 [speed_download] => 1030 [speed_upload] => 164 [download_content_length] => 998 [upload_content_length] => 0 [starttransfer_time] => 0.968 [redirect_time] => 0 ) *即将连接()到api.postrank.com端口80(#0) *正在尝试75.101.138.238…*有联系的 *连接到api.postrank.com(75.101.138.238)端口80(#0) >POST/v2/domain/activity?appkey=123456&format=json HTTP/1.1 主持人:api.postrank.com 接受:*/* 内容长度:159 内容类型:application/x-www-form-urlencoded http://api.postrank.com/v2/domain/activity?appkey=123456&format=json [内容类型]=>text/javascript [http_代码]=>200 [标题大小]=>172 [请求大小]=>355 [filetime]=>-1 [ssl\u验证\u结果]=>0 [重定向\u计数]=>0 [总时间]=>0.968 [namelookup\u time]=>0 [连接时间]=>0.437 [预转移时间]=>0.437 [上传大小]=>159 [下载大小]=>998 [速度下载]=>1030 [速度上传]=>164 [下载内容长度]=>998 [上传内容长度]=>0 [开始传输时间]=>0.968 [重定向时间]=>0 ) Drupal版本:

* About to connect() to api.postrank.com port 80 (#0) * Trying 75.101.138.238... * connected * Connected to api.postrank.com (75.101.138.238) port 80 (#0) > POST /v2/domain/activity?appkey=123456&format=json HTTP/1.1 Host: api.postrank.com Accept: */* Content-Length: 175 Content-Type: application/x-www-form-urlencoded http://api.postrank.com/v2/domain/activity?appkey=123456&format=json [content_type] => text/javascript [http_code] => 200 [header_size] => 172 [request_size] => 371 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.905 [namelookup_time] => 0 [connect_time] => 0.437 [pretransfer_time] => 0.437 [size_upload] => 175 [size_download] => 126 [speed_download] => 139 [speed_upload] => 193 [download_content_length] => 126 [upload_content_length] => 0 [starttransfer_time] => 0.905 [redirect_time] => 0 ) *即将连接()到api.postrank.com端口80(#0) *正在尝试75.101.138.238…*有联系的 *连接到api.postrank.com(75.101.138.238)端口80(#0) >POST/v2/domain/activity?appkey=123456&format=json HTTP/1.1 主持人:api.postrank.com 接受:*/* 内容长度:175 内容类型:application/x-www-form-urlencoded http://api.postrank.com/v2/domain/activity?appkey=123456&format=json [内容类型]=>text/javascript [http_代码]=>200 [标题大小]=>172 [请求大小]=>371 [filetime]=>-1 [ssl\u验证\u结果]=>0 [重定向\u计数]=>0 [总时间]=>0.905 [namelookup\u time]=>0 [连接时间]=>0.437 [预转移时间]=>0.437 [上传大小]=>175 [下载大小]=>126 [速度下载]=>139 [速度上传]=>193 [下载内容长度]=>126 [上传内容长度]=>0 [开始传输时间]=>0.905 [重定向时间]=>0 )
答案是Drupal将查询字符串中的“&”改为“
”,远程API服务只处理参数分隔符“&”,而不处理“
”。因此,当它将post数据拆分时,它只正确地获得了数组中的第一个参数。

@RRStoyanov,是的,我的意思是
&