curl CMD行与PHP脚本

hc2pp10m  于 2022-11-13  发布在  PHP
关注(0)|答案(2)|浏览(166)

我可以在PowerShell中运行curl命令,它可以工作,但当我尝试移动到php脚本时却不行(php也可以从命令行运行)命令行:
curl.exe https://api.bigcommerce.com/stores/a1b2c3d4/v3/customers/attributes -H "x-auth-token: a1b2c3d4a1b2c3d4a1b2c3d4a1b2c3d4" -H "Content-Type: application/json"
退货:

{"data":[{"id":2,"name":"gp_customer_id","type":"string","date_created":"2021-12-14T14:18:10Z","date_modified":"2021-12-14T14:18:10Z"}],"meta":{"pagination":{"total":1,"count":1,"per_page":50,"current_page":1,"total_pages":1}}}
PS C:\Users\JAMESB\Documents\webroot\BC\swamp

PHP文件:

$ACCESS_TOKEN = "a1b2c3d4a1b2c3d4a1b2c3d4a1b2c3d4";
$STORE_HASH = "a1b2c3d4";

$headers = array();
$headers[] = "x-auth-token: $ACCESS_TOKEN";
$headers[] = 'Content-Type: application/json';
$headers[] = 'ACCEPT: application/json';
var_dump ($headers);
    echo "https://api.bigcommerce.com/stores/$STORE_HASH/v3/customers/attributes\n";
$state_ch = curl_init();
//    curl_setopt($state_ch, CURLOPT_URL,"https://api.bigcommerce.com/stores/$STORE_HASH/v3/customers/attributes");
    curl_setopt($state_ch, CURLOPT_URL,"https://api.bigcommerce.com/stores/a1b2c3d4/v3/customers/attributes");
    curl_setopt($state_ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($state_ch, CURLOPT_HTTPHEADER, $headers);
var_dump($state_ch);
    $state_result = curl_exec ($state_ch);
var_dump($state_result);
    $state_result = json_decode($state_result);

var_dump($state_result);
?>

退货:

array(3) {
[0]=>   string(45) "x-auth-token: a1b2c3d4a1b2c3d4a1b2c3d4a1b2c3d4"
[1]=>   string(30) "Content-Type: application/json"     
[2]=>   string(24) "ACCEPT: application/json"}
https://api.bigcommerce.com/stores/a1b2c3d4/v3/customers/attributes  resource(4) of type (curl)  bool(false)  NULL

谢谢!金布斯

x3naxklr

x3naxklr1#

curl_exec()失败(它返回了false
请尝试呼叫curl_error()以了解原因:

$state_result = curl_exec ($state_ch);
if ( ! $state_result) {
    print(curl_error($state_ch) . PHP_EOL);
}

注意:“ACCEPT”头文件可能不正确。我从来没有见过所有的大写字母,我也不记得规范中是怎么说的。而且,你的命令行版本中没有显示ACCEPT头文件。

agxfikkp

agxfikkp2#

DaveAM的回答让我犯了一个错误:
SSL证书问题:无法获取本地颁发者证书
从那里,另一个stackoverflow的答案是这样的:
上面的步骤,虽然有帮助,但在Windows 8上对我不起作用。我不知道相关性,但下面的步骤起作用了。基本上是cacert.pem文件中的一个变化。希望这能帮助一些人。
从此处下载cacert.pem文件:http://curl.haxx.se/docs/caextract.html将文件保存在PHP安装文件夹中。(例如:如果使用xampp -请将其保存在c:\Installation_Dir\xampp\php\cacert.pem中)。打开您的php.ini文件并添加以下行:重新启动Apache服务器,应该可以修复问题(只需根据需要停止并启动服务即可)。
我是一个新手,没有足够的代表来喜欢戴夫的答案。如果你能给他一些爱,我会很感激:)

相关问题