php无法读取远程URL的XML 使用多种方法,在本地都调试正常,但上传到服务器,多种方法都无法显示,估计是不是php.ini有什么限制或者什么函数没打开?或者服务器限制访问远程XML?有什么办法修改服务器,让其可以正常显示XML的内容? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ini的设施 allow_open_url 必须是On你可以运行 <?php var_dump( ini_get('allow_open_url') );不过这个选项默认就是开启的,我更觉得是你的代码在不同版本上有问题 <?header('Content-Type:text/html;charset= UTF-8');$file = "http://mobile.smg.gov.mo/xml/e_actual_brief.xml";$handle = fopen ($file , "rb");$contents = "";do { $data = fread($handle, 8192); if (strlen($data) == 0) { break; } $contents .= $data;} while(true);fclose ($handle);$xml_parser = xml_parser_create();xml_parse_into_struct($xml_parser, $contents, $vals, $index);xml_parser_free($xml_parser);$i =1;foreach ($vals as $xml_elem) { $weather[$i] = $xml_elem[value]; $i++;}unset($xml_elem);//print_r($weather);//print_r("test:".$file);//echo "test:".$weather[12] . " " . $weather[19] . "°C";?>都是PHP5.0 1、<? 改为 <?php 你的服务器可能不支持短标记,浏览器 右键--查看网页源代码 可确认2、$weather[$i] = $xml_elem[value];应改为$weather[$i] = isset($xml_elem['value']) ? $xml_elem['value'] : '';你服务器上的 php 的错误检测级别可能更高本地 $xml_elem[value] 这样都不报错的话,也过于宽松了其他没毛病,测试通过如果修改后依然不能运行的话,那么就要查看 allow_open_url 是否打开了 如何把下面每次rows[0]的值弄成数组 如何让某个链接在IE7,8中在新窗口中打开,而不是选项卡 请问为什么先输出checkInter(3.5)? 问个简单的URL问题 问大家一个比较复杂的遍历文件问题. =>的用途 路径问题 关于 session 的问题 请问高手php调用dll中winapi的问题 怎么才能取到我想要的属性? 关于ajax+php多用户同时请求的问题,高手请进! 关于在php中添加c扩展的问题,做过的请来看看!
你可以运行 <?php var_dump( ini_get('allow_open_url') );
不过这个选项默认就是开启的,我更觉得是你的代码在不同版本上有问题
header('Content-Type:text/html;charset= UTF-8');
$file = "http://mobile.smg.gov.mo/xml/e_actual_brief.xml";
$handle = fopen ($file , "rb");
$contents = "";
do {
$data = fread($handle, 8192);
if (strlen($data) == 0) {
break;
}
$contents .= $data;
} while(true);fclose ($handle);
$xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $contents, $vals, $index);
xml_parser_free($xml_parser);
$i =1;
foreach ($vals as $xml_elem) {
$weather[$i] = $xml_elem[value];
$i++;
}
unset($xml_elem);
//print_r($weather);
//print_r("test:".$file);
//echo "test:".$weather[12] . " " . $weather[19] . "°C";
?>都是PHP5.0
2、$weather[$i] = $xml_elem[value];
应改为
$weather[$i] = isset($xml_elem['value']) ? $xml_elem['value'] : '';
你服务器上的 php 的错误检测级别可能更高
本地 $xml_elem[value] 这样都不报错的话,也过于宽松了其他没毛病,测试通过如果修改后依然不能运行的话,那么就要查看 allow_open_url 是否打开了