• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage 500 Error durch PHP-MySql

Hi,

ich bekomme einen 500 Internal Server Error sobald ich mehr als ca. 5 Queries in meinem Skipt lade.

Es werden keine Fehler in den Logs angezeigt, dass es an der Anzahl der Queries liegt ist eine Vermutug, denn wenn ich einen Querie aus dem Skript entferne geht alles wieder (Liegt nicht an dem Querie den ich rausgenommen habe, denn egal welchen ich rausnehme es geht dann wieder ;) )

Jemand eine Idee wo man das in der PHP oder MySql Konfiguration ändern muss? Oder gibt es andere Lösungsvorschläge? Andere Diagnosen?

btw. bevor jemand fragt:

Code:
error_reporting(E_ALL); // reports all errors
ini_set("display_errors", "1"); // shows all errors
ini_set("log_errors", 1);

steht bereits in der Datei - Geloggt werden trotzdem keine Fehler. :)

//eiskaltereistee
 
Werbung:
Werbung:
Deine o.g. Angaben haben nichts mit dem error-Log zu tun sondern regeln die Ausgabe in der Rückgabe im Browser.

Weiterhin: es wäre evtl. gut wenn Du den kompletten Quellcode der Seite hier zeigen würdest. I.d.R. sind es Schreibfehler die so etwas verursachen.
 
Doch, schon log_errors heisst ob die PHP fehler protokolliert werden sollen oder nicht. Ist ja aber auch irrelevant.
Dennoch steht in den Logs kein Fehler.

Am Querie kann es wie gesagt auch nicht liegen da ich diese zum einen schon kontrolliert habe und zum anderen ist es egal welchen querie ich weg nehme, dann läuft es wieder. Ist also egal welcher Querie von mir auskommentiert wird... :/
 
Werbung:
Ich bezweifel das es ein Syntax Error ist, die werden nähmlich angezeigt. Habe ich grade auch nochmal probiert. ;)

Hier sind die Code Teile die relevant sind.

Code:
    public function Create ($params) {
   
        if(!Client::checkUsage($params["clientid"])) {
           
            json::Current()->AddResponse("error", "Es können keine weiteren IP-Tables erstellt werden.");               
           
        }
       
        if(!IpTables::checkExist($params["sourceip"],$params["sourceport"],$params["destinationip"],$params["destinationport"])) {
           
            json::Current()->AddResponse("error", "Es können keine weiteren IP-Tables erstellt werden, wo bereits eine Weiterleitung exestiert.");               
        }
       
        if(json::Current()->status != "error") {
            $result = $this->AddIpTable($params["clientid"],$params["sourceip"],$params["sourceport"],$params["destinationip"],$params["destinationport"]);
           
            if(!$result) {
                
                json::Current()->AddResponse("error", "iptable konnte nicht in die Datenbank eingetragen werden");               
               
            }
           
           
            if(!$this->AddCron($result)) {
                
                json::Current()->AddResponse("error", "Der Cronjob konnte nicht in die Datenbank eingetragen werden.");
               
            }
           
            json::Current()->AddResponse("success", "Die Daten wurden erfolgreich eingetragen.");
        }
    }

Code:
class IpTables {
   
   
    public static function checkExist ($sip, $sport, $dip, $dport) {
        Database::Current()->ReadRows("SELECT `id` FROM `tbliptables` WHERE `sourceip`='" . DataBase::Current()->EscapeString($sip) . "' AND `sourceport`='" . DataBase::Current()->EscapeString($sport) . "'");
               
        if(DataBase::Current()->getRows() > 0) {
           
            return false;
           
        }
       
        $dexist = Database::Current()->ReadRows("SELECT `id` FROM `tbliptables` WHERE `destinationip`='" . DataBase::Current()->EscapeString($dip) . "' AND `destinationport`='" . DataBase::Current()->EscapeString($dport) . "'");
   
        if(DataBase::Current()->getRows() > 0) {
           
            return false;
           
        }
       
        return true;
    }
   
}

Code:
    public function Execute ($sql, $log = true) {
        if(json::Current()->status != "error") {
            $this->counter++;
            $res = $this->conn->query($sql);
           
            if ($this->conn->error) {
                echo "Ein MySql-Error ist aufgetreten: " . $this->conn->error;
               
                foreach(debug_backtrace() as $trace){
                    echo "Datei: " . $trace['file'] . ", Zeile " . $trace['line'];
                    break;
                }
                die("<br />");
            }
       
            if($log) {
               
                Log::Current()->AddDatabaseEntry($sql . " " . $this->conn->error);
               
            }
        } else {
           
            Log::Current()->AddDatabaseEntry("CANNOT EXCUTE MYSQL COMMAND, ERROR WAS FOUND");
           
        }
       
        $this->res = $res;
       
        return $res;
    }

Code:
 public function ReadRows ($sql) {
         $res = array();
         $mysql = $this->Execute($sql);

         while ($row = $mysql->fetch_object()) {
             $res[] = $row;
         }
        
         return $res;
     }

Code:
 public function getRows () {
        
        return $this->res->num_rows;
       
     }
 
Ist das eine größere/komplexe Operation die das Script ausführt? Kann mir nen 500er mit PHP als Auslöser kaum vorstellen. Ich würd eher am Apache suchen.
 
Werbung:
Hi,

denke auch das es dann an der apache oder mysql Konfiguration liegt.

Wie soll ich das denn aber debugen wenn ich keinen Fehler bekomme?

//eiskaltereistee
 
/var/logs/ -> Dort halt apache und mysql errorlog
und die vhost logs /var/www/vhosts/<domain>/logs -> Dort halt die apache error logs

Aber dort steht nichts...
 
Werbung:
Hi,

in der syslog steht nichts. Hier mal das was in der error_log steht

[Sun Jun 21 04:15:55 2015] [error] [client 93.230.20.30] Failed loading /usr/lib/php5/20090626/ioncube_loader_lin_5.4.so: /usr/lib/php5/20090626/ioncube_loader_lin_5.4.so: undefined symbol: zend_new_interned_string
[Sun Jun 21 04:15:55 2015] [error] [client 93.230.20.30] PHP Warning: Module 'mcrypt' already loaded in Unknown on line 0
[Sun Jun 21 04:15:55 2015] [error] [client 93.230.20.30] PHP Deprecated: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0
[Sun Jun 21 04:15:55 2015] [error] [client 93.230.20.30]
[Sun Jun 21 04:15:55 2015] [error] [client 93.230.20.30] Deprecated: Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0
[Sun Jun 21 04:15:55 2015] [error] [client 93.230.20.30] Premature end of script headers: cgi_wrapper

Sollte aber nicht mit dem Fehler zusammenhängen, da diese auch bei einem erfolgreichen Aufruf dort stehen.

Ansonsten steht nirgends ein Fehler o.Ä.
 
Zuletzt bearbeitet:
Lässt Du dein PHP als CGI laufen? Dann wäre das hier
Code:
Premature end of script headers: cgi_wrapper
die Meldung über den error 500 - leider aber ohne tatsächlichen Grund. Dennoch solltest Du die Meldungen davor mal kontrollieren, da sie ggfs. damit im Zusammenhang stehen.
 
Werbung:
Hallo,

ich habe nun probehalber von "CGI-Applikation"(PHP v: 5.3.3) auf "CGI-Applikation" (PHP v: 5.4.41) geändert. Nun kommt kein 500 Fehler mehr sondern einen PHP Fehler - Welchen ich mir leider nicht erklären kann... Eventuell fehlende Module in der PHP Konfiguration? Wie kann ich diese dann hinzufügen?
Eventuell finden wir hier eine Lösung:


Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in /var/www/vhosts/<domain>/development/api.<domai>/classes/database.php on line 34
Konnte keine Verbindung zur Datenbank herstellen. No such file or directory

Zeile 34:

Code:
public function Connect ($abord_on_error = true) {

   34->  $this->conn = new mysqli($this->db['hostname'], $this->db['username'], $this->db['password'], $this->db['database']);

        if ($this->conn->connect_errno && $abord_on_error == true) {
           
            die("Konnte keine Verbindung zur Datenbank herstellen. " . $this->conn->connect_error);
            Log::WriteLog($this->conn->connect_error, "[MySql]");
        } else {
            if ($this->conn->connect_errno) {
                return false;
            } else {
                return true;
            }
        }
    }
 
Ok, auch komisch ist: PHP 5.4.41 -> MySql Host: localhost bekomme ich den Fehler wie er oben steht. Host: 127.0.0.1 bekomme ich wieder den 500 Fehler. :O
 
Ist diese mysqli-Klasse die in 34 instanziiert wird selbst geschrieben oder aus der PHP-Bib? Wie genau lautet die URL zum MySQL-Server, wie in deinem Code darauf zugegriffen wird? Bin in PHP ein bisschen eingerostet. Dieses localhost<->127.0.0.1 ist schon merkwürdig.
 
Werbung:
Hi,

kommt aus der PHP-Bib.

Komisch ist ja nur - Sobald die Verbindung zum Server erfolgreich ist kommt ein 500 Fehler sobald ich mehr als 5 Queries ausführe.

Ich programmiere grade meine passende Java anwendung dazu wenn dort der gleiche / Ähnlicher fehler auftauchen sollte kann es ja nur noch am MySql Server liegen... mal sehen. ;)

//eiskaltereistee
 
Wenn es echt erst ab ner bestimmten Zahl Queries auftaucht, wär das evtl. wirklich ein Hinweis dazu, dass Apache dem PHP-'Prozess' per Config nicht genug Resourcen zur Verfügung stellen kann und er deshalb den Auftrag terminiert. Durch den CGI-Modus wird das noch verstärkt, da für jeden Request die gesamte PHP-Laufzeit neu aufgebaut wird. Die Möglichkeit PHP als Apache-Modul auszuführen hast du nicht, oder?
 
Zurück
Oben