0

我正在尝试通过 url 传递获取变量以生成 xml 数据,传递变量并使用 curl 获取 xml 数据并将其带回网页,以便我可以解析数据并使用其中一个元素属性值并将其放入放入一个 php 变量以显示在页面上。

所以看起来我一直在这里,但我有以下代码,(仅供参考。我用“密码”代替了真实密码。“这里的托运人编号”代替了真实的托运人编号和“这里的令牌”代替此线程的真实令牌)

$xml = '
weight_system="IMPERIAL" shipper_number="shipper number in here" destination_postal_code="'.$data5['zip'].'" service_type="1"
';

$xml2 = '
total_pieces="'.$value.'" total_weight="'.$weight.'"
';       

$token = 'token here'; 
$base_url = 'https://www.shippingco.com/XML/RatingXML.jsp'; 

$request_url = $base_url . '?' . http_build_query(array(
'shipment' => '<shipment ' . $xml . '><total ' . $xml2 . '/></shipment>',
'token' => $token
));

// Get cURL resource
$curl = curl_init();
// Set some options - we are passing in a useragent too here
curl_setopt($curl, CURLOPT_URL, $request_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_VERBOSE, '1');
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, '1');
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, '1');
curl_setopt($curl, CURLOPT_CAINFO,  '../cert/ca.crt');
curl_setopt($curl, CURLOPT_SSLCERT, '../cert/mycert.pem');
curl_setopt($curl, CURLOPT_SSLKEY, '../cert/mykey.pem');
curl_setopt($curl, CURLOPT_SSLCERTPASSWD, 'password');
// Send the request & save response to $resp
$result = curl_exec($curl);
echo curl_error($curl);
// Close request to clear up some resources
curl_close($curl);

产生:

error: unable to use client certificate (no key found or wrong pass phrase?)

我尝试使用 getcwd().'../cert/...', getcwd().'/cert/...', 'public_html/cert/...' 调用路径并查看如果路径通过使用此代码有效,

if (file_exists('../cert/ca.crt')) {
    echo 'yes';
} else {
    echo 'no';
}

并且 file_exists 在调用 ../cert/ca.crt 时返回 yes,所以我在 curl 代码中使用该路径。但我仍然不确定还有什么问题。

我购买了一个 SSL 和专用 IP 地址,以防您想知道。我有 RSA 密钥、SSL 证书、CA 包和密码,并将它们作为上面列出的文件名和格式保存在他们自己的名为 cert 的目录中。如果我将它们保存为错误的文件格式或扩展名错误,请告诉我。谢谢你的时间。

目录结构:

public_html (root)
cert (dir inside public_html)
ca.crt (file inside cert)
mycert.pem (file inside cert)
mykey.pem (file inside cert)
secure (dir inside public_html)
shopping.php (file inside secure)
4

0 回答 0