Ajax上传器错误500

时间:2015-12-02 08:39:51

标签: javascript php jquery ajax

我的页面上有一个Ajax上传器。它从昨天开始运作良好。 现在我收到错误500.在控制台中它说

  

无法加载资源:服务器响应状态为500(内部服务器错误)

并引用我的上传脚本:

  <?php
// A list of permitted file extensions
$allowed = array('html','htm');

function save_table_to_json ( $in_file, $out_file ) {
    $html = file_get_contents( $in_file );
    file_put_contents( $out_file, convert_table_to_json( $html ) );
}

function convert_table_to_json ( $html ) {
$document = new DOMDocument();
$document->loadHTML( $html );

$xpath = new DomXPath($document);
$tables = $xpath->query("//*[contains(@class, 'mon_list')]");
$tableDom = new DomDocument();
$tableDom->appendChild($tableDom->importNode($tables->item(0), true));

$obj = [];
$jsonObj = [];
$th = $tableDom->getElementsByTagName('th');
$td = $tableDom->getElementsByTagName('td');
$thNum = $th->length;
$arrLength = $td->length;
$rowIx = 0;

for ( $i = 0 ; $i < $arrLength ; $i++){
    $head = $th->item( $i%$thNum )->textContent;
    $content = $td->item( $i )->textContent;
    $obj[ $head ] = $content;
    if( ($i+1) % $thNum === 0){ 
        $jsonObj[++$rowIx] = $obj;
        $obj = [];
    }
}

    return json_encode([ "Values" => $jsonObj ]);
}


if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){

    $extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);

    if(!in_array(strtolower($extension), $allowed)){
        echo '{"status":"error1"}';
        exit;
    }

    if(move_uploaded_file($_FILES['upl']['tmp_name'], $_FILES['upl']['name'])){
        save_table_to_json( 'heute_S.htm', 'heute_S.json' );
        save_table_to_json( 'heute_L.htm', 'heute_L.json' );
        save_table_to_json( 'morgen_S.htm', 'morgen_S.json' );
        save_table_to_json( 'morgen_L.htm', 'morgen_L.json' );
        echo '{"status":"success1"}';
    }else{
    echo '{"status":"error"}';
    exit;
}
}

我在服务器上没有改变任何东西。在服务器合法,只说有500错误。

但我该如何解决这个问题?

编辑:

在日志中说:

  

[Wed Dec 02 17:31:26.625826 2015] [fcgid:warn] [pid 11680] [客户知识产权]   mod_fcgid:stderr:PHP警告:DOMDocument :: loadHTML():空字符串   在第12行的/upload.php中作为输入提供,引用:/

第二个:

  

[Wed Dec 02 17:31:26.625830 2015] [fcgid:warn] [pid 11680] [客户知识产权]   mod_fcgid:stderr:PHP Catchable致命错误:参数1传递给   DOMDocument :: importNode()必须是DOMNode的一个实例,null给定,   在第7行的/upload.php中调用,并在第17行的/upload.php中定义,   referer:/

1 个答案:

答案 0 :(得分:1)

检查您的网络服务器错误日志。根据Web服务器,应该位于/ var / log / apache或/ var / log / nginx中。

这些将为您提供有关实际出错的信息,您应该可以从那里轻松解决。