Problem mit Modul Flexi Custom Code

  • Hallo,


    auf einer Webseite setze ich Flexi Custom Code ein. Sie Module sind jetzt nicht mehr sichtbar,
    Seit Donnerstag habe ich Probleme. Wenn ich die maximale Fehleranzeige aktiviere, werden Fehler in der helper-Datei ab Zeile 20 bis 26 angezeigt:

    Code
    Zeile 19 class modFlexiCustomCode {                Zeile 20 public static function parsePHPviaFile($codearea) {                        Zeile 21 $tmpfname = tempnam(JPATH_SITE."/tmp", "html");                        Zeile 22 $handle = fopen($tmpfname, "w");                        Zeile 23 fwrite($handle, $codearea, strlen($codearea));                        Zeile 24 fclose($handle);                        Zeile 25 include_once($tmpfname);                        Zeile 26 unlink($tmpfname);                Zeile 27 }


    Die Fehlermeldungen:


    Kann mir jemand helfen.
    Gruß Dietmar

  • Code
    $tmpfname = tempnam(JPATH_SITE."/tmp", "html");


    versucht eine Datei mit Prefix html im joomlaeigenen tmp-Verzeichnis anzulegen, also innerhalb des Joomla-Ordners.


    Da das nicht gelingt, probiert es die Zeile im /tmp-Verzeichnis des Servers, das im Normalfall NICHT beschreibbar ist für Joomla. Daraus resultiert ein leerer Dateiname.
    fopen(): Filename cannot be empty
    und in Folge
    fwrite() expects parameter 1 to be resource, boolean given
    , was ein FALSE ist.


    Also prüfe, ob das Joomla-tmp-Verzeichnis beschreibbar ist für Joomla.
    System > Systeminformationen > Verzeichnisrechte.
    Ob es richtig eingestellt ist (Konfiguration > Server > Tempverzeichnis).


    Poste die paar Zeilen unter System > Systeminformationen > Reiter Systeminformationen, ob CGI aktiviert ist.


    Deaktiviere den FTP-Modus in Joomla, solltest du ihn aktiviert haben.

  • Zitat

    Also prüfe, ob das Joomla-tmp-Verzeichnis beschreibbar ist für Joomla.


    tmp-Ordner und die nächste Ebene haben die Rechte 755

    Zitat

    Poste die paar Zeilen unter System > Systeminformationen > Reiter Systeminformationen, ob CGI aktiviert ist.


    PHP erstellt für Linux alfa3059 4.4.6-040406-generic #201603161231 SMP Wed Mar 16 16:33:41 UTC 2016 x86_64
    Datenbankversion 5.5.47-0+deb8u1
    Datenbankzeichensatz latin1_german1_ci
    Datenbankverbindungszeichensatz utf8mb4_general_ci
    PHP-Version 5.6.24
    Webserver Apache
    PHP-Interface für den Webserver cgi-fcgi
    Joomla!-Version Joomla! 3.6.2 Stable [ Noether ] 4-August-2016 23:41 GMT
    Joomla!-Plattform-Version Joomla Platform 13.1.0 Stable [ Curiosity ] 24-Apr-2013 00:00 GMT
    Browsererkennung Mozilla/5.0 (Windows NT 6.1; rv:47.0) Gecko/20100101 Firefox/47.0

    Zitat


    Deaktiviere den FTP-Modus in Joomla, solltest du ihn aktiviert haben.


    war deaktiviert

  • Hm, fällt mir nur noch ein, vor Zeile 21 eingeben:

    Code
    echo JPATH_SITE."/tmp";exit;


    Ob hier der absolute Pfad zum Joomla-tmp-Verzeichnis ausgegeben wird und korrekt ist.


    Mir kommen generell die meisten Pfadangaben in den Meldungen komisch vor. Oder hast du die gekürzt? Was natürlich fies gewesen wäre ;)

  • @later


    Zitat

    Mir kommen generell die meisten Pfadangaben in den Meldungen komisch vor. Oder hast du die gekürzt?


    Ich habe nur hier zwischen den zwei aufeinanderfolgenden // Zeichen eine Buchstabenkombination entfernt, die auf den
    Namen des Webusers hinweist. Sie gehört zur Pfadangabe zur Joomlainstallation.


    Zitat

    Hm, fällt mir nur noch ein, vor Zeile 21 eingeben: echo JPATH_SITE."/tmp";exit;


    Wenn ich diese Zeile in der index.php des Templates eingebe, wird eine leere Seite mit der Pfadangabe

    Code
    /var/www/.../html/tmp

    angezeigt. Anstelle der Pünktchen steht wieder der Nutzername.

  • @later


    Hallo,
    ich habe deine Anleitung umgesetzt und das Modul NameDayTest wird richtig angezeigt. Vielen Dank :)


    Es gibt nur ein Problem mit den Umlauten, die anstelle des Umlauts mit Fragezeichen erscheinen.
    Ich verwende jetzt aber JDatabase und als größter Vorteil ist mir genannt worden, dass es hier keinen Zeichenprobleme gibt.
    Woher können die jetzt kommen?


    Gruß Dietmar

  • Da die Worte mit den "fehlerhaften" Zeichen nicht von der Datenbank eingefügt wurden, habe ich den Code in meinen Script entsprechend abgeändert:

    Code
    echo ' ihren Namenstag feiern. Herzlichen Glückwunsch!  In der Landesprache sagt man: Všechno nejlepši k svátku!
  • Kann ich mit diesem Script auch Html-Code einbinden?


    Ja. Theoretisch kannst du mit dem verwendeten require jede Datei einbinden. Text, HTML, JavaScript, CSS, gemischt... Natürlich gibt es nicht bei allen sinnvolle Ausgaben, PDF z.B.


    Trick für HTML wäre, sie als php-Datei zu hinterlegen. Muss ja kein PHP drinnen sein, wo .php drauf steht.


    Oder du legst dir einen weiteren, anders benannten Modulstil an, der an die Modulposition ein

    Code
    .html

    anhängt statt

    Code
    .php