Ergebnis 1 bis 9 von 9

Thema: Bestimmte PHP-Befehle werden nicht ausgeführt

  1. #1
    Contao-Nutzer
    Registriert seit
    15.11.2011.
    Beiträge
    81

    Standard Bestimmte PHP-Befehle werden nicht ausgeführt

    Hallo,
    mache gerade ein Test-Update von der letzten 3.x.y nach 4.4.18.

    In der Version 3 habe ich per Modul ein externes PHP-Skript eingebunden, welches aus dem Template-Ordner geladen wird. Hier wird eine contao-fremde DB abgefragt und der output in ein File zum Download geschrieben. Das funktioniert Jahrelang super.

    Unter Version 4 und PHP7.2 klappt es nur noch eingeschränkt. Die DB wird zwar ausgelesen, aber die File-Operationen laufen nicht.
    An PHP7.2 liegt es nicht, denn wenn ich das PHP-File außerhalb von contao aufrufe, dann funktioniert es.
    Aus meiner Sicht blockt das contao hier irgendwie:

    Hier mal ein Auszug aus dem externen PHP-File:
    PHP-Code:
      $tmpfilename 'out.csv';
      
    touch($tmpfilename);  
      
    // Sichergehen, dass die Datei existiert und beschreibbar ist
      
    if (is_writable($tmpfilename)) 
        {
        if (!
    $handle fopen$tmpfilename"wb")) 
          {
          print 
    "Kann die Datei $filename nicht öffnen";
          exit;
          }
        
    // Schreibe header in die geöffnete Datei.
        
    if (!fwrite($handleutf8_decode($Meinheader))) 
          {
          print 
    "Kann in die Datei $tmpfilename nicht schreiben";
          exit;
          } 
    .......
    Der touch legt die Datei schon nicht an. Habe auch andere commands versucht und verschiedenste Zielverzeichnisse probiert. Nichts.

    Ich komme hier nicht weiter und finde mit google rein gar nichts.
    Jeder Tip ist willkommen.

    VG
    Oliver
    Geändert von Spooky (13.06.2018 um 10:20 Uhr) Grund: Added [php] tags

  2. #2
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Wenden
    Beiträge
    803
    Partner-ID
    5666
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hi,

    wie rufst du die externe Datei den auf? Die Ordner template und files liegen nun einen Ebene tiefer.

    Schon mal versucht die datei über {{file::dateiname.php}} aufzurufen?

  3. #3
    Contao-Nutzer
    Registriert seit
    15.11.2011.
    Beiträge
    81

    Standard

    Genauso rufe ich das ja auf.
    Im Artikel ein Modul eingefügt und darin rufe ich so auf: {{file::lsg/index2.php}}

    Die index2.php wird ja auch im Template-Ordner gefunden und ausgeführt. Den Teil der Datenbankabfrage und die Ausgabe am Bildschirm macht er ja.
    Nur wenn der Export in eine Datei zum Download geschrieben werden soll, dann macht er genau die Dateioperationen nicht, wie z.B. touch, fopen,...

    PHP7 ist es nicht
    Ordner hab ich schon verschiedene gewählt
    Auch schon mal temporär auf 777 gesetzt
    Es scheint für mich, als wenn da innerhalb des cms was unterbunden wird.

    Wie gesagt, wenn ich die datei ausserhalb des conta-ordnersystems direkt aufrufe, klappt es.
    Unter 3.5.x auch.
    Nur unter 4.x.y eben nicht.

  4. #4
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Wenden
    Beiträge
    803
    Partner-ID
    5666
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Welche Fehlermeldung bekommst du den beim Versuch die Datei zu schreiben?

    Hast du mal versucht absolute Pfad zu verwenden?

  5. #5
    Contao-Nutzer
    Registriert seit
    15.11.2011.
    Beiträge
    81

    Standard

    Leider bekomme ich gar keine Fehlermeldung und der Debug-Modus bringt mich auch nicht weiter.
    Im Log finde ich auch nichts.
    Ich habe auch schon den kompletten Pfad weggelassen und versucht, die Datei im gleichen Verzeichnis (also templates) anlegen zu lassen, nichts.
    Was meinst du genau mit der absoluten Pfaden? So etwas? /www/htdocs/w00xyz/contao/web/ (allinkl)

  6. #6
    Contao-Nutzer
    Registriert seit
    15.11.2011.
    Beiträge
    81

    Standard

    Hey, genau das wars!
    Mit z.B. "/www/htdocs/w00xyz/contao/system/tmp" haut es hin und die Datei wird angelegt. Läuft alles wieder wie früher.
    Super und danke.

  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Wo genau soll die out.csv liegen?

  8. #8
    Contao-Nutzer
    Registriert seit
    15.11.2011.
    Beiträge
    81

    Standard

    Das wäre mir letztendlich egal.
    Bisher lag sie immer unter system/tmp
    Kann aber auch gerne unter files/tmp liegen.

  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    35.517
    Partner-ID
    10107

    Standard

    Wie auch immer, du musst den kompletten Pfad angeben. Mit
    PHP-Code:
    \System::getContainer()->getParameter('kernel.project_dir'
    holst du dir unter Contao >=4.4 den absoluten Pfad zur Contao Installation.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, Gäste: 2)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •