【发布时间】:2018-06-07 16:28:33
【问题描述】:
我从一个仍在使用 PHP 4.4 的旧服务器上运行的客户端收到了这个旧脚本。我们将它放置在使用 PHP 5.6 的新服务器上,但它不再像它应该的那样工作了。
脚本将表单保存到 XML 文件中,并再次将 XML 中的信息检索到表单中。问题是它不再检索它。我们得到这个错误:
PHP 致命错误:在 null 上调用成员函数 getAttribute()
这是代码出错的部分。
if(!$xml_page->parseXML($strXMLToCContents)){
$show_errors .= "Parsing failed.<br>";
}
$nodeRoot =& $xml_page->documentElement;
$nodeToCDef =& $nodeRoot->firstChild;
$strToCButtonLabel = $nodeToCDef->getAttribute("name");
$countToCRows = $nodeToCDef->childCount;
for($n = 0; $n < $countToCRows; $n++){
$thisLinkNode =& $nodeToCDef->childNodes[$n];
$arrLinks[] = array($thisLinkNode->getAttribute("name"), $thisLinkNode->getAttribute("page"));
}
}
}
if(count($arrLinks) == 0){
for($n = 0; $n < $numFormFieldsToShow; $n++){
$arrLinks[] = array('', '');
}
}
任何需要更改以使其再次工作的想法。谢谢!
【问题讨论】:
-
对于初学者,您可以删除所有这些参考分配
-
哪一行报错了?
$nodeToCDef->getAttribute("name")或$thisLinkNode->getAttribute("name")? -
另外,如果解析失败,没有什么可以阻止它尝试访问 DOM。
-
$nodeToCDef->getAttribute("name")