简体   繁体   English

PHP调用中的500 Internal Server Error

[英]500 Internal Server Error on PHP calls

I have this problem when I request to a php file using $.ajax it always return me a 500 server error, but only when I upload the files to my server. 当我使用$.ajax请求php文件时,我总是遇到此问题,它总是返回500服务器错误,但仅当我将文件上传到服务器时才出现。 I use XAMPP on Windows 8.1 and in the localhost runs perfectly. 我在Windows 8.1和localhost上完美运行XAMPP。

I've tried accesing the url of the php file directly and also gives me the same error. 我已经尝试直接访问php文件的网址,也给了我同样的错误。

Ajax : 阿贾克斯

function get_blog(reload_list){
    var $titulo, $texto, $response, $post, $post_list;
    var parameters = window.location.search;
    $.ajax({
        method: 'get',
        url: '/php/blog.php' + parameters,
        success: function(data){
            if(data == "404"){
                $("#blog").html("404 El articulo que buscas no existe");
            } else {
                $response = data;
                $post_list = $response.post_list;
                $titulo = $response.post.titulo;
                $texto =  $response.post.texto;
                $("title#blog_title").html("IBR - " + $titulo);
                $("h3#blog_title").html($titulo);
                $("#blog_text").html($texto);

                if(reload_list){
                    for(i=0; i<=$post_list.length; i++){
                        $("#post_list").append($post_list[i]);
                    }
                }
            }
        }
    });

PHP : PHP的

<?php
error_reporting(E_ALL);
ini_set('display_errors' 1); 

$l =  mysql_connect ( "localhost" , "myserver" , "mypass" ) or die("Error connecting:<BR><BR>".mysql_error());

mysql_select_db( "mydb" ) or die("Error getting db:<BR><BR>".mysql_error()); 
if(!isset($_GET['post_id'])) {
    $query = mysql_query("SELECT * FROM mytable ORDER BY id DESC LIMIT 1") or die(mysql_error());
    $row = mysql_fetch_array($query);
    $id = stripslashes($row['id']); 
    $titulo = stripslashes($row['titulo']); 
    $texto = stripslashes($row['texto']); 

    $post = [
            'id' => $id,
            'titulo' => $titulo,
            'texto' => $texto
    ];

}else{
    // echo $_GET['post_id'];
    $post_id = $_GET['post_id'];
    $query = mysql_query("SELECT * FROM mytable WHERE id=$post_id ORDER BY id DESC LIMIT 1") or die(mysql_error());
    $row = mysql_fetch_array($query);
    if(empty($row)){
        die("404");
    }
    $id = stripslashes($row['id']); 
    $titulo = stripslashes($row['titulo']); 
    $texto = stripslashes($row['texto']); 


    $post = [
            'id' => $id,
            'titulo' => $titulo,
            'texto' => $texto
    ];
}


$query = mysql_query("SELECT * FROM mytable ORDER BY id DESC") or die(mysql_error());
while ($row = mysql_fetch_array($query) )
{

    $id = stripslashes($row['id']); 
    $titulo = stripslashes($row['titulo']); 

    $li = '<a class="text_decoration post_list_item" href="devocional.html?post_id='.$id.'"><li>'.$titulo.'</li></a>';

    $post_list[]= $li;
}

$response = [
    'post' => $post,
    'post_list' => $post_list
];

$json_response = json_encode($response);
print_r($json_response);
?>

Actually I don´t have access to my error_log . 实际上,我无法访问我的error_log Also tried to see errors through the: 还尝试通过以下方式查看错误:

error_reporting(E_ALL);
ini_set('display_errors' 1);

But the browser only shows a blank page. 但是浏览器仅显示空白页。 I have this same issue on a Facebook API call using the PHP SDK too. 我在使用PHP SDK的Facebook API调用中也遇到了同样的问题。 I really don't know what to do. 我真的不知道该怎么办。 Thanks for helping in advance. 感谢您的提前帮助。

PHP didn't support the shorthand arrays as you're currently using until 5.4. PHP直到5.4才支持当前使用的速记数组。 http://php.net/manual/en/migration54.new-features.php , http://php.net/manual/en/language.types.array.php http://php.net/manual/en/migration54.new-features.phphttp://php.net/manual/en/language.types.array.php

Here's your updated code which should work and be forwards compatible with 5.6. 这是您的更新代码,该代码应该可以正常工作并与5.6向前兼容。

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1); 

$l =  mysql_connect ( "localhost" , "myserver" , "mypass" ) or die("Error connecting:<BR><BR>".mysql_error());

mysql_select_db( "mydb" ) or die("Error getting db:<BR><BR>".mysql_error()); 
if(!isset($_GET['post_id'])) {
    $query = mysql_query("SELECT * FROM mytable ORDER BY id DESC LIMIT 1") or die(mysql_error());
    $row = mysql_fetch_array($query);
    $id = stripslashes($row['id']); 
    $titulo = stripslashes($row['titulo']); 
    $texto = stripslashes($row['texto']); 

    $post = array(
            'id' => $id,
            'titulo' => $titulo,
            'texto' => $texto
    );

}else{
    // echo $_GET['post_id'];
    $post_id = $_GET['post_id'];
    $query = mysql_query("SELECT * FROM mytable WHERE id=$post_id ORDER BY id DESC LIMIT 1") or die(mysql_error());
    $row = mysql_fetch_array($query);
    if(empty($row)){
        die("404");
    }
    $id = stripslashes($row['id']); 
    $titulo = stripslashes($row['titulo']); 
    $texto = stripslashes($row['texto']); 


    $post = array(
            'id' => $id,
            'titulo' => $titulo,
            'texto' => $texto
    );
}


$query = mysql_query("SELECT * FROM mytable ORDER BY id DESC") or die(mysql_error());
while ($row = mysql_fetch_array($query) )
{

    $id = stripslashes($row['id']); 
    $titulo = stripslashes($row['titulo']); 

    $li = '<a class="text_decoration post_list_item" href="devocional.html?post_id='.$id.'"><li>'.$titulo.'</li></a>';

    $post_list[]= $li;
}

$response = array(
    'post' => $post,
    'post_list' => $post_list
);

$json_response = json_encode($response);
print_r($json_response);
?>

Also, obligatory notes here... 另外,这里的强制性说明...

  1. Change your SQL drivers from mysql_ to mysqli or PDO. 将您的SQL驱动程序从mysql_更改为mysqli或PDO。
  2. Separate out your user input from your queries or at least use the mysql_real_escape_string (that function name might be inverted in order). 从查询中分离出用户输入,或者至少使用mysql_real_escape_string(该函数名称可能会按顺序反转)。 Your currently open to SQL injections. 您当前对SQL注入开放。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM