Leerzeichen vor dem <!DOCTYPE HTML> entfernen?

  • Hallo in die Runde,


    ich habe den Hinweis bekommen, dass Leerzeichen vor dem <!DOCTYPE HTML>, Probleme mit der Darstellung von XML- Dateien verursachen können. Nun weiß ich leider nicht, wie diese dort reingekommen sind. Als Verursacher wurden mir System- Plugins genannt. Diese habe ich Testweise dektiviert. Es gab aber keine Veränderung. Auch Tante Google brachte mir keine Lösung zu diesem Problem.


    Könnt ihr mir da weiterhelfen?



    Mein System:
    Joomla 3.6.5
    PHP: 5.6.28


    Danke und beste Grüße
    Faro

  • hast du schon mal deine index.php vom Tempate angeschaut? evtl. ist es da auch schon nicht sauber

    mfG
    LSG



    „Es gibt keine dummen Fragen. Nur dumme Antworten. Allerdings – gibt es Fragen, die eindeutig die Dummheit des Fragestellers selbst beweisen.“

  • „Es gibt keine dummen Fragen. Nur dumme Antworten. Allerdings – gibt es Fragen, die eindeutig die Dummheit des Fragestellers selbst beweisen.“


    Danke! Ja, in der index.php vom Template wird es ohne Leerzeichen richtig angezeigt.

  • Ich denke, man sollte hier auf jeden Fall nach der Ursache suchen. Wenn die index.php-Datei sauber ist, dann kommen dafür andere Dateien in Betracht.


    Schau dir mal die Dateien includes\defines.php und includes\framework.php an.


    Solche Leerzeichen sind oft ein Zeichen, dass irgendwas mit der Seite nicht stimmt. Sehr häufig habe ich gesehen, dass eine Seite in solchen Fällen gehackt wurde. Du kannst versuchen, eine Reparatur-Installation von Joomla auszuführen. Das setzt zumindest die Standard-Dateien zurück und schließt das Hack-Problem für Core-Files aus.


    Das Zeichen am Anfang ist übrigens ein Tabulator-Zeichen.

  • Schau dir mal die Dateien includes\defines.php und includes\framework.php an.


    Hallo svenbluege,
    diese beiden Dateien habe ich überprüft. Die Inhalte sind mit denen einer Neuinstallation identisch. Auch der Zeitstempel des letzten Updates 11.12.2016 ist Aktuell.


    Welche Probleme können durch die vorgesetzten Tabulator-Zeichen, außer die Darstellung von XML- Dateien noch entstehen?


    Wie meinst Du das mit der Reparatur- Installation?


    Danke Faro

  • Welche Probleme können durch die vorgesetzten Tabulator-Zeichen, außer die Darstellung von XML- Dateien noch entstehen?


    Keine und selbst das nicht im Normalbetrieb einer Webseite unter Joomla und in keinem mir bekannten CMS.
    Zwar kann man (X)HTML(5) auch als xml interpretieren, aber solange kein puristischer XML-Parser ins Spiel kommt, was er im täglichen Leben nicht tut für die bereits komplett gerenderte Seite... Mio Seiten haben Spaces/Tabs/Leerzeilen vor der DOC-Deklaration.


    Kannst ja auch weiter deaktivieren. Irgendein Plugin, Modul, sonstwas wird's schon sein.

  • Es gibt Komponenten, die erwarten eine saubere, also leere, Ausgabe. Ich liefere zum Beispiel mit Event Gallery Bilder via Joomla aus. Ein Leerzeichen in einer binären Datei ist nicht schön. Daher sollte der Fehler behoben werden. Vor allem weil ich durch einige Support-Anfragen weiß, dass solche Leerzeichen meist durch Schadsoftware erzeugt werden. Aus diesem Grund bin ich da etwas empfindlicher.


    Eine Installation kann man so reparieren: https://www.ostraining.com/blog/joomla/how-to-reset-joomla/

  • Hallo und guten Abend,


    nach sehr intensiver Suche habe ich nun den Übeltäter gefunden.


    Ich nutze in meinem Shop (VirtueMart) "Amazon Payments" zu diesem gibt es zwei Plugins. Eines davon nennt sich "System - Pay with Amazon". Wenn ich dieses nun deaktiviere wird mein <!DOCTYPE HTML> ohne Leerzeichen (Tabulator Zeichen) richtig angezeigt. Aktiviere ich es, werden wieder die Leerzeichen eingefügt. Nur nicht im Warenkorb dort wird (bei aktivem Plugin) der <!DOCTYPE HTML> richtig ohne Leerzeichen angezeigt.


    Was kann ich nun tun? Das Plugin wird ja benötigt. ;(


    Gruß Faro

  • Hallo svenbluege,


    bin leider kein Programmierer. Magst Du mal reinschauen? Viel steht da nicht drinn. Ich frage mich gerade, wozu es dieses Amazon System Plugin überhaupt gibt? Für die Zahlungsabwicklung is ja ein anderes zuständig.
    [spoiler<?php


    defined('_JEXEC') or die('Direct Access to ' . basename(__FILE__) . 'is not allowed.');


    /**
    *
    * @package VirtueMart
    * @subpackage system
    * @version $Id$
    * @author Valérie Isaksen
    * @link http://www.virtuemart.net
    * @copyright Copyright (c) 2004 - September 20 2016 VirtueMart Team. All rights reserved.
    * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
    * VirtueMart is free software. This version may have been modified pursuant
    * to the GNU General Public License, and as distributed it includes or
    * is derivative of works licensed under the GNU General Public License or
    * other free or open source software licenses.
    *
    */
    class PlgSystemAmazon extends JPlugin {


    function __construct (& $subject, $config) {
    parent::__construct($subject, $config);


    }


    function onAfterRender () {
    defined('DS') or define('DS', DIRECTORY_SEPARATOR);
    if (!class_exists( 'VmConfig' )) require(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'config.php');
    VmConfig::loadConfig();


    $fileName = JPATH_ROOT.DS.'plugins'.DS.'system'.DS.'amazon'.DS.'touch.php';
    $tstamp = @filemtime($fileName);
    if ($tstamp !== false) {
    $now = time();
    $difference = abs($now - $tstamp);
    $frequency = $this->params->get('frequency');
    if ($difference > $frequency) {
    JLoader::import('joomla.plugin.helper');
    JPluginHelper::importPlugin('vmpayment');
    $app = JFactory::getApplication();
    $app->triggerEvent('plgVmRetrieveIPN', array());
    };
    }
    @touch($fileName);


    }
    }][/spoiler]


    Gruß Faro