1

在我回到主机(再次)之前,他们在下面的脚本中给出的唯一错误日志是:

脚本头过早结束:php-cgi

我正在运行的脚本在其他服务器和我的本地机器上运行,但是在这个 perticualr 服务器上给出了错误 500:

$ch = curl_init("http://feeds.energydigger.com/headlines.xml");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
$doc = new SimpleXmlElement($data, LIBXML_NOCDATA);

if(isset($doc->channel))
{
    parseRSS($doc);
}
function parseRSS($xml)
{
    $cnt = 3;
    for($i=0; $i<$cnt; $i++)
    {
        $url    = $xml->channel->item[$i]->link;
        $title  = $xml->channel->item[$i]->title;
        $desc = $xml->channel->item[$i]->description;
        $date = $xml->channel->item[$i]->pubDate;

        echo '<p><a href="'.$url.'">'.$title.'</a><br />'.$date.'</p>';
    }
}

有谁知道什么可能会产生错误,我不能说我以前见过这个......我仍在尝试获取 PHP 日志。

4

1 回答 1

1

如果抛出异常但未捕获,并且在 PHP 设置display_errors= 0 中,您可能会收到 500 错误。很可能是由 SimpleXML 抛出的。尝试用 XML 操作将该部分包装在一个try .. catch块中,看看异常是什么。例如:

$ch = curl_init("http://feeds.energydigger.com/headlines.xml");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);

try
{
    $doc = new SimpleXmlElement($data, LIBXML_NOCDATA);

    if(isset($doc->channel))
    {
        parseRSS($doc);
    }
    function parseRSS($xml)
    {
        $cnt = 3;
        for($i=0; $i<$cnt; $i++)
        {
            $url    = $xml->channel->item[$i]->link;
            $title  = $xml->channel->item[$i]->title;
            $desc = $xml->channel->item[$i]->description;
            $date = $xml->channel->item[$i]->pubDate;

            echo '<p><a href="'.$url.'">'.$title.'</a><br />'.$date.'</p>';
        }
    }
}
catch (Exception $e)
{
    echo $e -> getMessage();
}

以防万一,这里有更多关于 PHP exceptions 的内容

于 2013-04-18T10:24:45.170 回答