Zum Inhalt springen

Hook-Aufruf verhindert ordentliche HEADER-Ausgabe

Erstellt am 5. Mai 2007 · 8 Antworten · letzte Antwort am 2. Juli 2007

Tags: PHP, Frage

m.​z.​ ·

Hallo zusammen,

ich schlage mich schon seit Stunden mit folgendem Problem herum: 🙁

Ich habe in einer Extension einen Hook gesetzt (Typo3 v.4.1.1; PHP5), der den aktuellen Datensatz beim Speichern verÀndert. Das Ding funktioniert auch - ABER - irgendetwas stört den nachfolgenden Header-Befehl ganz gewaltig.

Folgender Fehler kommt stÀndig beim Speichern:

Warning: Cannot modify header information - headers already sent by (output started at MEIN_ROOT_PFAD\typo3conf\ext\my_extension\class.tx_myextension_tcemainprocdm.php:1) in MEIN_ROOT_PFAD\typo3\alt_doc.php on line 1458

Nein, es sind keine ĂŒberflĂŒssigen Zeichen außerhalb des <?php-?> Tags.

Hier die o.g. Klasse class.tx_myextension_tcemainprocdm.php:

<?php
class tx_myextension_tcemainprocdm {
   function processDatamap_preProcessFieldArray (&$fieldArray, $table, $id, &$reference) {
      $row = $reference->datamap[$table][$id];
      $fieldArray['header'] = "HOSSA!";
   }
}
?>

In der ext_localconf.php binde ich das dann so ein:

# Habe die Zeile nur zur besseren Lesbarkeit umgebrochen!

$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']
   ['t3lib/class.t3lib_tcemain.php']
   ['processDatamapClass'][] = 
   'typo3conf/ext/my_extension/
   class.tx_myextension_tcemainprocdm.php:
   tx_myextension_tcemainprocdm';

Wie gesagt, es funktioniert - der Datensatz wird mit dem putzigen Titel "Hossa!" versehen und gespeichert.

Kommentiere ich die Hook-Registrierung aus, gibt es keine Probleme. Der Fehler tritt auch auf, wenn ich die o.g. Funktion in der Klasse leere; also nichts drinsteht.

Die o.g. Fehlermeldug zerschießt dann regelmĂ€ĂŸig das ganze BE.

Und was soll da bei Zeile 1 sein - da ist nichts außer dem PHP-Tag... #angry#

VorschlÀge, Ideen, gar Lösungen?

Viele GrĂŒĂŸe, Matthias

steffenk ·

schreib die hook-Aktivierung mal in eine Zeile. Ausserdem kannst Du im Installtool die php-Fehlermeldungen aktivieren, um der Sache auf den Grund zu kommen.

m.​z.​ ·

Hallo Steffen,

steffenk schrieb

schreib die hook-Aktivierung mal in eine Zeile.

habe ich ja. Steht genau so - OHNE Umbruch(!!!) in der ext_localconf.php:

$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_tcemain.php']['processDatamapClass'][] = 'typo3conf/ext/my_extension/class.tx_myextension_tcemainprocdm.php:tx_myextension_tcemainprocdm';
steffenk schrieb

(...) Installtool die php-Fehlermeldungen aktivieren (...)

Habe alles was ERROR und DEBUG ist aktiviert. PHP meint noch immer in Zeile 1 passiert was. Aber da steht wirklich nichts. Weitere Fehlermeldungen gibt es nicht!

Was will mir diese Meldung bloß sagen:
(output started at (...)\class.tx_myextension_tcemainprocdm.php:1)
Ich interpretiere die :1 am Ende als Zeile 1 in der Klasse. Aber die ist "sauber"; da steht nur der PHP-Tag drin.

Bin ratlos :o

Weitere Ideen?

Matthias

steffenk ·

ja

leg diese Datei nochmal neu an (class.tx_myextension_tcemainprocdm.php), da scheinen sich Extrazeichen zu verbergen

m.​z.​ ·

Hallo Steffen,

steffenk schrieb

da scheinen sich Extrazeichen zu verbergen

du bist genial. 8-)

Ich kam vor ein paar Minuten auf die selbe Idee und mein HEX-Editor zeigte mir sehr merkwĂŒrdige Zeichen am Dateianfang.

Herzlichen Dank fĂŒr Deine Idee - Problem gelĂ¶ĂŸt.

Ich wĂŒnsche Dir eine schöne Woche!

Matthias

steffenk ·

fein - und danke 😉

Dieser DatenmĂŒll kommt oft zu Stande, wenn ein Editor ein nicht korrektes BOM fĂŒr utf8 schreibt. Manchmal geht auch dieses utf8-Format bei der FTP-Übertragung verloren.

Bei ProblemfÀllen nehm ich immer Textpad, dort kann man sich alle Zeichen anzeigen lassen, und der Editor beherrscht alle Formate.

Stoneage ·

Das hat nichts mit GenialitÀt zu tun. Nur manche Leute sind einfach zu faul, um nach den Ursachen zu suchen. Und irgendwie gibt es davon recht viele in diesem Forum.

Bitbull ·

@ Tetramatrix: seit wann wird denn hier so rumgetrollt???
@ SteffenK: Ehre, wem Ehre gebĂŒhrt!

Gruß

Bitbull