脚本头的过早结束:php-cgi - 运行CURL脚本时

时间:2013-04-18 10:08:27

标签: php curl

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

脚本标题的提前结束:php-cgi

我正在运行的脚本在其他服务器和我的本地计算机上运行但是在这个相关服务器上发出错误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日志。

1 个答案:

答案 0 :(得分:1)

如果抛出异常而未捕获异常,则可能会出现500错误,并且在PHP设置中display_errors = 0.很可能是由SimpleXML引发的。尝试在try .. catch块中使用XML操作包装该部分,并查看异常是什么。例如:

$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();
}

以防万一,here's more about PHP exceptions