PHP Fehler 500 nach serverupgrade

lordg2009

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.559
Hi,

mein webhoster hat mich aufgrund zu hohen ansturms gezwungen, einem Upgrade zuzustimmen. PHP Version ist jetzt 5.4, war vorher glaube ich 5.1, bin mir aber nicht sicher. Seither funktioniert der Chat nicht mehr. Der Fehlercode 500 wird in der Javascript Konsole ausgeworfen, wo ein Server Side Event den Chat aktualisiert.

mit Hilfe von 'exit();' Konnte ich den Fehler auf eine mysqli Anfrage eingrenzen.

PHP:
$query = "SELECT t.chatID, t.date_create, t.userID, t.content, t.username FROM (SELECT chat_messages.chatID, chat_messages.date_create, chat_messages.userID, chat_messages.content, users.username FROM chat_messages JOIN users ON users.userID=chat_messages.userID WHERE chat_messages.chatID>? AND chat_messages.chat_channelID=0 ORDER BY chat_messages.date_create DESC LIMIT 50) AS t ORDER BY t.date_create ASC";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("i", $_SESSION['chat'][1]['last_chatID']);
$stmt->execute();
$stmt->bind_result($chat['chatID'], $chat['date_create'], $chat['userID'], $chat['content'], $chat['username']);

if($stmt->fetch()) {
	$content .= 'data: channel,1' . PHP_EOL;
	do {
		$chat_msg_date = new DateTime($chat['date_create']);
		$content .= 'data: ' . $chat_msg_date->format('H:i M j') . ',' . mb_strlen($chat['username'], "utf-8") . ',' . $chat['username'] . $chat['content'] . PHP_EOL;
	} while($stmt->fetch());
	if($chat['chatID'] > $_SESSION['chat'][1]['last_chatID']) {
		$_SESSION['chat'][1]['last_chatID'] = $chat['chatID'];
	}
}
$stmt->close();

Wenn ich 'exit()' zwischen Zeile 9 und 10 postiere, kommt noch eine Antwort. Ab Zeile 10 kommt der Error Code 500.

Habt ihr eine Idee? Für eine schnelle Hilfe wäre ich euch dankbar.
 
PHP Version nicht kompatibel? Kannst du zwischen den PHP Versionen switchen?
 
Fehlermeldungen anschalten und anschauen. Gerate kostet denke ich nur Zeit ;)

Jetzt will ich aber auch mitraten :D

Was genau beinhaltet $chat['date_create']? Muss ein String sein soweit ich weiß... Und du musst vorher denke ich auf 5.2 gewesen sein, DateTime ist seit "(PHP 5 >= 5.2.0, PHP 7)" implementiert (http://php.net/manual/de/class.datetime.php)

//Edit2: Hast du auch schon rausgefunden ;) :D

Lg, Franz
 
Zuletzt bearbeitet:
Ja, aber nur nach oben, wahrscheinlich war es aber doch schon eine höhere Version. Die DateTime Klasse gibt es erst seit 5.2
 
Mit 5.4 sind auch einige Sachen weggefallen. Kann mich errinern das ein älteres Shopsystem ähnliches Problem hatte von 5.3 auf 5.4
 
0x8100 schrieb:
abgesehen von deinem problem - es wurde auf php5.4 upgedatet?! das wird seit 1,5 jahren nicht mehr supportet -> http://php.net/supported-versions.php evtl. mal nen anderen anbieter suchen.
Ich kann von 5.4 -7.11 hin und her switchen wenn ich das möchte. Muss ich jetzt auch einen neuen Anbieter suchen?:rolleyes:
 
Ich kann ab jetzt auch bis auf 7 switchen. Ich will aber erst mal, dass es wieder läuf.

Es liegt an '$chat['date_create']'. Da stürzt er ab., alle anderen Werte kann er ausgeben.

in mysql ist es typ timestamp und hat den standart current_timestamp.

Bin dran
 
Hey lordg,

wie oben gefragt, hast du mal versucht die Timezone vorher zu setzen?

PHP:
date_default_timezone_set('Europe/Berlin');

BG
 
Batti schrieb:
Hey,

ist vielleicht keine Timezone gesetzt? Teste mal folgendes:
PHP:
date_default_timezone_set('Europe/Berlin');

BG

Hat tatsächlich funktioniert. Wahninn, ich bin echt happy. Was war da denn los? Auf php.net steht, dass bei Fehlen maximal ein 'E_WARNING' geworfen wird. Warum hat es denn zu einem Error 500 geführt?
 
Weil keine Fehlermeldungen vom Server ausgegeben werden, wenn diese Deaktiviert sind... Deswegen - wie ich geschrieben hatte - immer erstmal die Fehlermeldungen aktivieren ;) und beim nächsten mal die Posts besser durchlesen :D

Die Errorlogs verraten dir außerdem mehr, wenn du darauf zugriff hast.

Lg, Franz
 
Zuletzt bearbeitet:
Aber ich hatte die Fehlermeldungen mit error_reporting(E_ALL); doch eingeschaltet, oder muss man noch eine andere Option treffen?
 
Zurück
Oben