gpt4 book ai didi

php - 如何使用 php 访问 ssl 或 https 类型域的 xml 文件并存储在我们的服务器中

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:57 25 4
gpt4 key购买 nike

我想访问存储在另一个域中的 XML 文件。该域具有 SSL 证书。我想将它存储在我的服务器文件夹中。我怎样才能在 PHP 中实现这一点?我可以在没有 HTTPS 的情况下从其他站点下载,但无法使用 HTTPS 下载。

<?PHP
$dom = new DOMDocument();
$dom->load('www.123.com/abc.xml');
$dom->save('filename.xml');
?>

最佳答案

我们将使用 Curl 下载此文件。有 2 个选项。

  1. 快速修复
  2. 正确的修复

首先是快速修复。

警告:这可能会引入 SSL 旨在防止的安全问题。

设置:

  1. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 为 false

<?PHP

$url = "https://data.gov.in/sites/default/files/Date-Wise-Prices-all-Commodity.xml";

// create curl resource
$ch = curl_init();

//Now set some options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// Download the given URL, and return output
$xml = curl_exec($ch);

// Check for errors
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}

// Close the cURL resource, and free system resources
curl_close($ch);

// Write the string $xml to a file, data.xml
if (file_put_contents ('data.xml', $xml) !== false) {
echo 'Success!';
} else {
echo 'Failed';
}
?>

第二个,也是正确的修复。设置 3 个选项:

  1. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
  2. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
  3. curl_setopt($ch, CURLOPT_CAINFO, getcwd() . '\CAcert.crt');

您需要做的最后一件事是下载 CA 证书。

  • 转到,- http://curl.haxx.se/docs/caextract.html -> 单击“cacert.pem” -> 将文本复制/粘贴到文本编辑器中 -> 将文件另存为“CAcert.pem” 检查它不是“CAcert.pem.txt”

<?PHP

$url = "https://data.gov.in/sites/default/files/Date-Wise-Prices-all-Commodity.xml";

// create curl resource
$ch = curl_init();

//Now set some options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . '\CAcert.crt');


// Download the given URL, and return output
$xml = curl_exec($ch);

// Check for errors
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
}

// Close the cURL resource, and free system resources
curl_close($ch);

// Write the string $xml to a file, data.xml
if (file_put_contents ('data.xml', $xml) !== false) {
echo 'Success!';
} else {
echo 'Failed';
}
?>

关于php - 如何使用 php 访问 ssl 或 https 类型域的 xml 文件并存储在我们的服务器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31088595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com