Ergebnis 1 bis 20 von 20

Thema: CLI-Cronjob kann initialize nicht mehr nutzen ab C.3.2.20

  1. #1
    Contao-Nutzer Avatar von holist
    Registriert seit
    27.08.2009.
    Ort
    Karlsruhe
    Beiträge
    95
    Partner-ID
    5798

    Frage CLI-Cronjob kann initialize nicht mehr nutzen ab C.3.2.20

    Hallo zusammen,
    habe eine Contao 3.2.16 Version auf C3.2.20 gepacht. Seither 'stirbt' mein kleines Script, das Formulardaten akkreditiert und als Excel-Statistik ausgibt. Das Script ist in einem eigenen Unterordner (/jobs), im Contao Root Verzeichnis. In den Release Info zwischen C3.2.16 und C3.2.20 habe ich keine Details gefunden, die eine Herleitung erlaubt hätten.

    PHP-Code:
    Failed opening required '../system/initialize.php' (include_path='.:/usr/local/lib/php'
    Weitere Fehlermeldung erhalte ich nicht. Im Backup (C3.2.16) läuft das Script noch.
    Hat jemand eine Idee. Wenn es Sicherheitsrelevant ist, bin ich auch über eine Info per PN dankbar.

    Frohes Schaffen und Gruß, Kai
    Geändert von holist (04.09.2015 um 14:23 Uhr)

  2. #2
    Contao-Nutzer Avatar von holist
    Registriert seit
    27.08.2009.
    Ort
    Karlsruhe
    Beiträge
    95
    Partner-ID
    5798

    Standard

    Contao Check sagt: Die Robots.txt wurde verändert
    Ansonsten keine Fehler...

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

    Standard

    Wenn dein Script tatsächlich im Ordner /jobs im Root von Contao ist, dann ist der Pfad '../../system/initialize.php' auf jeden Fall falsch. Da gehst du eine Ebene zu viel nach oben. Das ist aber schon immer so.

  4. #4
    Contao-Nutzer Avatar von holist
    Registriert seit
    27.08.2009.
    Ort
    Karlsruhe
    Beiträge
    95
    Partner-ID
    5798

    Standard

    Ja, das stimmt. Der Pfad war schon richtig. Hatte die Zeile aus der Konsole kopiert, als ich den Ordner verschoben hatte. Daran liegt es leider nicht.

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

    Standard

    Verstehe ich jetzt nicht was du meinst. Wo genau liegt nun dein script und was genau steht dort drin?

  6. #6
    Contao-Nutzer Avatar von holist
    Registriert seit
    27.08.2009.
    Ort
    Karlsruhe
    Beiträge
    95
    Partner-ID
    5798

    Standard

    Hab den Beitrag geändert.
    Das Script liegt unter /jobs/xlsxexport.php.
    Contao Initialize liegt unter /system/initialize.php.
    Die Zeile in der xlsxexport.php ist
    PHP-Code:
    define('TL_MODE''BE');
    require_once (
    '../system/initialize.php'); 
    Hat bis zur Version C3.2.16 so funktionert.

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

    Standard

    Wie wird das Script aufgerufen?

  8. #8
    Contao-Nutzer Avatar von holist
    Registriert seit
    27.08.2009.
    Ort
    Karlsruhe
    Beiträge
    95
    Partner-ID
    5798

    Standard

    Aktuell über die Konsole, ansonsten über einen Cronjob über das System. Wir haben schon überlegt ob sich an Dateirechten was geändert haben könnten, haben aber noch keine Unterschiede festgestellt.
    Was meinst Du wo er durcheinander kommen könnte?

  9. #9
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Das kann z.B. am Arbeitsverzeichnis liegen, also aus welchem Arbeitsverzeichnis die Datei aufgerufen wird.

  10. #10
    Contao-Nutzer Avatar von holist
    Registriert seit
    27.08.2009.
    Ort
    Karlsruhe
    Beiträge
    95
    Partner-ID
    5798

    Standard

    Ich glaube die Verzeichnisstruktur kann ich ausschließen, daran hat sich ja seit dem Update nichts geändert. Der Cronjob ruft richtig auf und hat mit C3.2.16 funktioniert. Außer dem Update hat sich weder die PHP-Version noch die Verzeichnisstruktur geändert. Habe mir von Glen Langer mal die einzelnen Update Patches geladen um zu sehen, welche Dateien in Contao sich verändert haben. Bislang aber auch ohne nennenswerte Ergebnisse.

    Grundsätzliche Frage: Darf man seit Contao 3.2.20 die 'initialize.php' nicht mehr 'anzapfen' gab es ein Sicherheitsleck, das geschlossen wurde? Darf die initialize.php nur noch aus bestimmten Verzeichnissen aufgerufen werden?

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

    Standard

    Wie schon angemerkt kann es davon abhängen, wo das aktuelle Working Directory liegt. Und daher brauchen wir die Information, wie nun exakt der Aufruf erfolgt.


    Mit der Contao Version hat dein Problem nichts zu tun.

  12. #12
    Contao-Nutzer Avatar von holist
    Registriert seit
    27.08.2009.
    Ort
    Karlsruhe
    Beiträge
    95
    Partner-ID
    5798

    Standard

    Okay, Danke spooky, die Info mit der contao Version war wichtig.

    Es gibt aktuell zwei Verzeichnisse, ein DEV (3.2.16) als Backup der ursprünglichen LIVE-Version, und es gibt das neue LIVE-Verzeichnis (C3.2.21).
    Der Cronjob geht auf die Live-Version. Zu jeder Contao-Version gibt es eine eigenen Datenbank.
    Bis auf die gepatchten Update-Dateien gibt es zwischen DEV und LIVE keine Unterschiede. Sie liegen auf gleicher Ebene im www-root. Der Server ist Linux. PHP-Version ist 5.4 für den Cronjob. Im Cronjob ist der absolute Pfad aus dem Root hinterlegt.

  13. #13
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Aus eigener Erfahrung kann ich nur sagen, dass ein Cronjob nicht in jedem Fall mit der PHP-Version aufgerufen wird, die man für das Verzeichnis oder die Domain eingestellt hat. Auch in der Konsole kann man nicht unbedingt einfach "php" aufrufen und sich darauf verlassen, dass hier die selbe Version benutzt wird wie eingestellt. Ich hatte z.B. mal probiert, die cron.php direkt per PHP aufzurufen mittels Cronjob. Das ist auch schiefgegangen wegen nicht gefundener initialize.php. Es wurde auch eine uralte PHP-Version aufgerufen. Als ich dann explizit eine neuere Version von PHP mit Pfad aufgerufen habe, hat es dann funktioniert. Oder jedefalls zumindest kam die Fehlermeldung nicht mehr.

  14. #14
    Contao-Nutzer Avatar von holist
    Registriert seit
    27.08.2009.
    Ort
    Karlsruhe
    Beiträge
    95
    Partner-ID
    5798

    Standard

    Wir nutzen einen Systemcronjob, NICHT den contao-cron. Nur damit es keine Missverständnisse gibt.
    Für den Cron-Aufruf gibt es eine extra php.ini und die PHP-Version ist festgelegt. Diese Fehlerquellen kann ich (denke ich) auch ausschließen. Zumal die Konstellation bei der DEV-Version ja tut was es soll.

  15. #15
    Contao-Nutzer Avatar von holist
    Registriert seit
    27.08.2009.
    Ort
    Karlsruhe
    Beiträge
    95
    Partner-ID
    5798

    Standard

    Um Kopierfehler und Update-Fehler auszuschließen habe ich ein C3.2.21-Core-Zip von der Website geladen, entpackt und an die DEV-Datenbank gehängt. Da die (fehlenden) Erweiterungen wie GoogleMaps, etc. für das Script nicht wichtig sind, habe ich diese weg gelassen.

    Auch hier kann die initialize.php nicht verarbeitet werden.
    Denke wir werden das Script direkt mit SQL verbinden und die Brücke über Contao weglassen.

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

    Standard

    Zitat Zitat von holist Beitrag anzeigen
    Okay, Danke spooky, die Info mit der contao Version war wichtig.

    Es gibt aktuell zwei Verzeichnisse, ein DEV (3.2.16) als Backup der ursprünglichen LIVE-Version, und es gibt das neue LIVE-Verzeichnis (C3.2.21).
    Der Cronjob geht auf die Live-Version. Zu jeder Contao-Version gibt es eine eigenen Datenbank.
    Bis auf die gepatchten Update-Dateien gibt es zwischen DEV und LIVE keine Unterschiede. Sie liegen auf gleicher Ebene im www-root. Der Server ist Linux. PHP-Version ist 5.4 für den Cronjob. Im Cronjob ist der absolute Pfad aus dem Root hinterlegt.
    Es fehlt immer noch die Info wie das Script aufgrufen wird

  17. #17
    Contao-Nutzer Avatar von holist
    Registriert seit
    27.08.2009.
    Ort
    Karlsruhe
    Beiträge
    95
    Partner-ID
    5798

    Standard

    Über die Konsole:
    PHP-Code:
    php5-54STABLE-CLI live/jobs/xlsxexport.php 
    Über den Cron: /kunden/XXX/cronjob/form-excel-sender.sh
    PHP-Code:
    #!/bin/bash
    env -/usr/local/bin/php54 -/kunden/XXX/cronjob/php.ini -/kunden/XXX/live/jobs/xlsxexport.php 
    Hilft Dir das?

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

    Standard

    Ja. In beiden Fällen stimmt dann die relative Pfadangabe deines
    PHP-Code:
    require_once('../system/initialize.php'); 
    nicht. Statt dessen kannst/musst du es zB so machen:
    PHP-Code:
    cd /kunden/XXX/live/jobs; /usr/local/bin/php54 -f xlsxexport.php 
    Bzw. wenn man deinen Aufruf übernimmt:
    PHP-Code:
    cd /kunden/XXX/live/jobsenv -/usr/local/bin/php54 -/kunden/XXX/cronjob/php.ini -f xlsxexport.php 
    In der Konsole:
    PHP-Code:
    cd /kunden/XXX/live/jobs
    php5
    -54STABLE-CLI xlsxexport.php 

  19. #19
    Contao-Nutzer Avatar von holist
    Registriert seit
    27.08.2009.
    Ort
    Karlsruhe
    Beiträge
    95
    Partner-ID
    5798

    Standard

    Danke Spooky, das versuche ich mal.

  20. #20
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Alternativ:
    PHP-Code:
    require_once(__DIR__ '/../system/initialize.php'); 
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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