Archiv der Kategorie ‘Web Development’

Typo3 und PHP 5.2.4: Leerer BODY in HTML, Empty BODY-Tag


Nach dem Update auf PHP 5.2.4 geben Typo3-Installationen im Frontend nur noch Seiten aus, bei denen zwischen den Body-Tags kein Inhalt mehr steht. Das Backend funktioniert allerdings und die restlichen Angaben (Titel, Meta-Tags, usw.) werden auch ausgegeben.

Nach langer Suche bin ich auf dieses Problem und die Lösung dazu gestoßen.


Typo3 Debugging / Logging aktivieren


Zuerst sollte man sicherstellen, dass das Protokollieren von Fehlern von PHP generell richtig eingestellt ist (Hinweise: richtige php.ini, error_reporting).

Dann lassen sich folgende Optionen in der localconf.php setzen, um möglichst alle Fehlermeldungen in Typo3 einzuschalten:
$GLOBALS['TYPO3_DB']->debugOutput = true;
$TYPO3_CONF_VARS['SYS']['displayErrors'] = '1';
$TYPO3_CONF_VARS['SYS']['sqlDebug'] = '1';
$TYPO3_CONF_VARS['FE']['debug'] = '1';

Wenn das Backend generell funktioniert, kann man noch das Admin-Panel aktivieren über Template:Setup:
config.admPanel = 1

Um eine defekte Datenbank-Tabelle zu finden kann man das MySQL-Query-Log einschalten und durchschauen oder auch einfach bei MyISAM-Tabellen diese prüfen:
find /var/lib/mysql/ -name '*.MYI*' -exec myisamchk {} \;


PHP: IP-Adresse via ip2long in Datenbank ablegen


Um eine IP-Adresse (IPv4) in einer Datenbank abzulegen bietet sich die PHP-Funktion ip2long an.

Was man dabei aber nicht vergessen darf, ist die Formatierung dieser Zahl als unsigned-Wert. Wenn man ansonsten das Datenbankfeld als unsigned-int (was dank 32-Bit bei IPv4 genau ausreicht) anlegt, erhält man beim Einfügen von Datensätzen nur IP-Adressfelder mit “0″.

Also nicht vergessen: … sprintf(“%u”, ip2long($ip))


Flash: Popup-Blocker in Firefox


Um aus Flash heraus ein Popup als Aktion auf einen Mausklick (auf ein Objekt) zu öffnen, war in ActionScript 2 folgendes möglich:

on(release) {
getUrl("javascript:openWin()");
}

Um dies in ActionScript 3 zu realisieren, muss man dem Objekt (bzw. dem ganzen Film mittels stage.) einen EventListener zuordnen:


stage.addEventListener(MouseEvent.MOUSE_UP, onEventMouseUp);
function onEventMouseUp(event:Event)
{
var url:URLRequest = new URLRequest("javascript:openWin(); void(0);");
navigateToURL(url, "_self");
}

Dadurch wird das Popup allerdings durch Firefox’ Popup-Blocker blockiert. Auch andere MouseEvents führen zum gleichen Problem. Ich habe bisher keine Lösung gefunden, in AS 3 den Popup-Blocker von Firefox zu umgehen. Lediglich die Version in AS 2 (obiges Beispiel) funktioniert.

Ein andere Versuch war, aus Flash heraus eine Trigger-Variable zu setzen, und diese in HTML/JS via setInterval() zu prüfen und dann erst das Popup zu öffnen. Allerdings wird das Popup auch in diesem Fall blockiert.


Flash Videos kostenlos erzeugen


Eine Kompakt-Digitalkamera, wie z.B. eine Casio Exilim EX-S500, kann auch kleine Videofilme (im AVI-Format) aufnehmen. Bei gutem Licht und ruhiger Haltung ist die Qualität meist gar nicht so schlecht. Um Videos auf Internetseiten abzuspielen verwenden viele Seiten aufgrund seines hohen Verbreitungsgrades Flash. Falls man jedoch Flash nur zum Abspielen von Videos einsetzen möchte, bietet es sich an, dies mit kostenlosen Werkzeugen zu erledigen.

Dazu muss zuerst das Ausgangsformat (AVI, MPEG, …) in das Flash-Video-Format konvertiert werden. Hierfür eignet sich besonders gut ffmpeg. Wie die Umwandlung an der Kommandzeile funktioniert beschreibt zum Beispiel Scott Yang hier.

Unter MacOS X bietet sich die grafische Oberfläche ffmpegx an. Ein entsprechendes FLV-Howto findet sich hier auf der ffmpegx-Seite.

Für die Kodierung der Videos sollte das Two-Pass-Encoding eingeschaltet werden, so dass die Quelldatei in einem ersten Durchlauf entsprechend vermessen und im zweiten Durchlauf dann mit einer variablen Bitrate kodiert wird.

Nach der Umwandlung wird das Flash-Video über eine Flash-Datei in die Webseite eingebettet. Dazu gibt es eine Reihe kostenloser Player, deren Lizenzbedingungen allerdings zu beachten sind (eine kommerzielle Nutzung ist meist ausgeschlossen bzw. nur gegen Gebühr erlaubt).


Flash-Video-Player zum Einbetten in HTML

Hinweis zum WordPress-Plugin “flv-embed”: in der Datei wp-content/plugins/flv-embed/flv-embed.php müssen die Hochkommas (‘) in Zeile 102 durch doppelte Anführungszeichen (“) ersetzt werden, ansonsten erhält man zumindest mit einem aktuellen WordPress einen Javascript-Fehler.

Flash-Video-Standalone-Player zum Abspielen und Testen

Und hier nun fünf äußerst spannende Test-Videos zum Qualitätsvergleich.
Die Ausgangsdatei war bei 3790 KBit/s etwa 2,6 MB gross. Alle in 640×480, bei 29,97 fp/s und unterschiedlichen Bitraten mit ffmpeg umgewandelt, allerdings 1-Pass-Encoding:

250 KBit/s – 420 KB:

500 KBit/s – 520 KB:

1000 KBit/s – 840 KB:

2000 KBit/s – 1,5 MB:

4000 KBit/s – 2,9 MB: