我正在尝试使用PHP和cURL从Amazon EC2实例上的自定义内置wordpress插件访问网站的sitemap.xml文件。 该网站的sitemap.xml文件只有13个项目,是一个很小的文件。 在浏览器中输入“ https://www.example.com/sitemap.xml”时,我可以查看文件。我在实例的php.ini文件中启用了“ fopen”。我的PHP代码非常简单,但是脚本运行了很长时间(几分钟)却没有结果并且出现了错误:
TCP connection reset by peer
function getThisSiteMap(){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.example.com/sitemap.xml');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36');
$feed = curl_exec($ch);
if (curl_error($ch)) {
$error_msg = curl_error($ch);
}
$xmlTermsIR = simplexml_load_string($feed);
if ($xmlTermsIR) {
echo 'HEELLEOO';
} else {
echo 'NOT WORKING' . '<br>';
echo $error_msg;
}
}
我有点困惑,因为我能够使用相同的代码访问其他sitemap.xml文件。我需要使用其他用户代理吗?如何使用cURL访问此sitemap.xml?任何帮助将不胜感激。
答案 0 :(得分:0)
我将通过SSH进入服务器,看看您是否可以简单地进行以下操作:
curl https://www.example.com/sitemap.xml
这将告诉您是代码问题还是无法从服务器解析域。我还会尝试回显$ feed并省略simplexml_load_string(),只是看它是否挂在请求上。
您还可以启用php日志,并通过将以下内容放在顶部来查看它是否快要死了而不是没有输出完成
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);