Zum Inhalt springen

Cronjob richtig einrichten

Erstellt am 3. Dezember 2008 · 19 Antworten · letzte Antwort am 18. November 2011

Tags: Frage

leof ·

Hallo zusammen,
hab schon einige Beiträge zu diesem Thema im Forum gefunden - leider hat mich keiner weiter gebracht.

Hab folgendes Problem:
Wenn ich einen Newletter verschicken möchte steht am Anfang unter "Verstand-Status" in einem grünen Kasten: "Cronjob aktiv"
Nach ein paar Minuten steht dann in einem orangenem Kästchen: "Cronjob prüfen oder Cronjob ist nicht konfiguriert."

Der Link "Versand anstoßen" funktioniert wunder bar. Ist halt etwas nervig bei 500 Mails 10 mal auf den Link klicken zu müssen.

Hab in der Doku nachgelesen - leider wurde ich daraus nicht schlau.
Die Homepage steht jweiland. Hab mal versuch das Skript /typo3cms/dav/typo3conf/ext/direct_mail/res/scripts/dmailerd.phpcron
Anfangs war das Skrip noch nicht mal ausführbar, was ich geändert habe:
-rwxr-xr-- 1 ssh-983387 nobody 5077 2008-10-29 17:37 dmailerd.phpcron

Habs nun versucht manuell aufzurufen. Sowohl mit 'sh' als auch mit "./" - Kommt immmer der gleiche Fehler:

: No such file or directoryphp
dmailerd.phpcron: line 3: /*****************************************************: No such file or directory
dmailerd.phpcron: line 4: calendar: command not found
: command not foundine 5: *
dmailerd.phpcron: line 6: syntax error near unexpected token `c'
dmailerd.phpcron: line 6: `*  (c) 1999-2004 Kasper Skaarhoj (kasperYYYY@typo3.co')

Auszug aus dem Inhalt von dmailerd.phpcron:

#!/usr/bin/php5
<?php
/***************************************************************
*  Copyright notice
*
*  (c) 1999-2004 Kasper Skaarhoj (kasperYYYY@typo3.com)
*  (c) 2004-2006 Stanislas Rolland <stanislas.rolland(arobas)fructifor.ca>
*  All rights reserved
*
[...]

Habs gefühl, dass er den Code nicht richtig akzeptiert, da das ja eig. auskommentiert sein sollte...

Auch der aufruf crontab -e bringt die Fehlermeldung:
cannot chdir(/var/spool/cron), bailing out.
/var/spool/cron: Permission denied

Cronjob kann ich, so weit ich weiß, auch nur im Kundenmenü erstellen...

Kann mir jemand helfen?
Danke,
Leo

leof ·

Hallo,
ich kam schon etwas weiter:
Hab an den Anfang der Datei

#!/usr/local/bin/php

geschrieben, da dort mein php liegt. Herausfindbar mit dem Befehlt: which php
Nun kommt nach dem Ausführen mit ./dmailerd.phpcron der Fehler:

bash: ./dmailerd.phpcron: /usr/local/bin/php^M: bad interpreter: No such file or directory

Kann in der Datei aber kein ^M finden. Weiß jemand Rat?

Danke, Leo

leof ·

Kam nun noch einen Schritt weiter: Es war an jedem Zeilenende das Zeilenumbruchszeichen von Windows, also ein "^M" zu finden, welches man jedoch leicht mit dem Befehl:

perl -e 'while (<>) {s/\r//;print}' dateiname> dateiname.ohne_crlf

weg bekommt.

Nun kommt beim Ausführen mit ./dmailerd.phpcron die Felhermeldung:

X-Powered-By: PHP/4.4.8
Content-type: text/html

<br />
<b>Warning</b>:  main(./t3lib/class.t3lib_div.php) [<a href='function.main'>function.main</a>]: failed to open stream: No such file or directory in <b>/kunden/206180_70794/rp-hosting/7620/8620/typo3cms/dav/typo3conf/ext/direct_mail/res/scripts/dmailerd.phpcron</b> on line <b>61</b><br />
<br />
<b>Fatal error</b>:  main() [<a href='function.require'>function.require</a>]: Failed opening required './t3lib/class.t3lib_div.php' (include_path='.:/usr/local/lib/php') in <b>/kunden/206180_70794/rp-hosting/7620/8620/typo3cms/dav/typo3conf/ext/direct_mail/res/scripts/dmailerd.phpcron</b> on line <b>61</b><br />

Da versteh ich nun beim besten Willen nix mehr ;-(

Leo

leof ·

Gibt schon wieder was Neues:
Mit dem Befehl
./dmailerd.phpcron>/dev/null
gibt es keine Fehlermeldung mehr... Jedoch werden die Mails nicht verschickt...

Funktioniert denn bei euch der Cronjob?

Lg, Leo

shustedt ·

Hallo,

gibts dazu schon etwas Neues?

Ich habe exakt das gleiche Problem, bin auch bei Weiland. Auf Nachfrage sagte er mir dann, dass Cronjobs über das Kundenmenü einzurichten sind und nicht über die Konsole. Da kommt bei mir auch "permission denied". Es können Cronjobs bis zu 30 Minuten eingerichtet werden, alles weitere dann nur direkt über den Support bei Weiland.

Allerdings ist scheinbar die Einrichtung nicht das Problem, sondern wirklich die Datei selber. Ich habe auch alles ausprobiert - aber im Kundenmenü sagt er mir dann immer:

Letzte Ausgabe des Cronjobs:
Fehler: /kunden/225578_70794/rp-hosting/8863/9863/typo3cms/projekt1/typo3conf/ext/direct_mail/res/scripts/dmailerd.phpcron ist nicht ausfuehrbar

Hier ist Rätselraten angesagt...

#paralyzed#

Viele Grüße,
Sebastian

shustedt ·

Hab den Cronjob zum Laufen gebracht. Es geht zwar nun weiter mit den Problemen, aber das gehört ja nicht hierher ;-)

Ich habe zunächst die Datei dmailerd.phpcron in dmailerd.php umbenannt und dann in der ersten Zeile das

#!/usr/local/bin/php

gelöscht. Weiter habe ich dann in der gleichen Datei Zeile 41 ersetzt durch

if (!defined('PATH_thisScript')) define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', $_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF'])));

Nun noch den Cronjob eingerichtet als absoluten HTTP-Aufruf und fertig! Der Pfad sieht bei mir so aus: http://www.XYZdomain.tld/typo3conf/ext/direct_mail/res/scripts/dmailerd.php

ankes ·

für den Aufruf des cron-jobs hab ich es so gemacht:

*/5 * * * * /usr/bin/php5 -q /var/.../kunde-xyz/typo3conf/ext/direct_mail/res/scripts/dmailerd.php > /dev/null

Dann ist auch Wurscht, was in der ersten Zeile des scripts drinsteht.
Umbenannt habe ich die Datei aber auch.
Grüße
Andreas

leof ·

Ja - sry... mein Fehler
Wollte damit eig. sagen, dass wir (bei jweiland gehosteten) keinen Zugriff auf die crontab haben...
Deswegen auch die ganzen umständlichen Versuche, per Sricpaufruf oder ähnliches, einen cronjob einzurichten...

Gruß, Leo

shustedt ·

Ist aber ganz einfach, habe auch einen Server bei Weiland.
Einfach (wie oben beschrieben) den absoluten Pfad als HTTP-Aufruf unter "Cronjob" im Weiland Kundenmenü eingeben. Man kann einen Aufruf von min. 30 Minuten wählen, sollte aber passen.

13Yeti13 ·

Hallo,
habe gerade das gleiche Problem und bin auch bei jweiland!
Komme jedoch mit der Lösungsfindung hier nicht weiter voran... #angry#

Konnte soweit folgen, dass ich die Datei in dmailerd.php umbennant habe, auch die Zeile #!/usr/local/bin/php sowie Zeile 41 sind bearbeitet. Über ssh erhalte ich aber immer noch die Fehlermeldung "<b>Warning</b>: main(./t3lib/class.t3lib_div.php) [<a href='function.main'>function.main</a>]: failed to open stream: No such file or directory in <...".

Im Kundenmenü von jweiland habe ich den cronjob auch eingerichtet mit dem Modus "HTTP Aufruf per URL" und einen absoluten Pfad eigegeben in der Form "http://URL/typo3cms/LAUFENDESSYSTEM/typo3conf/ext/direct_mail/res/scripts/dmailerd.php". Trotzdem geht es nicht. Das Kundenmenü zeigt mir bei der letzten Ausgabe einen 404 Fehler?! Und im TYPO3 Backend ist der Cronjob Status wieder auf Achtung und die Newsletter werden nicht automatisch versendet!

Was mache ich noch falsch? War die Überarbeitung der Datei jetzt überflüssig? Ist der absolute Pfad nicht ok (die Variante http://kunden/.... geht auch nicht, hier Fehlermeldung "curl: (6) Couldn't resolve host 'kunden'"?

Danke im Voraus und Gruß

leof ·

So - nach langer Sendepause hab ich mich auch nochmal damit befasst und alles wie oben beschrieben durchgeführt (umbenannt, 1. Zeile gelöscht und die Zeile 41 ersetzt).

Nun kommt der Fehler

HTTP/1.1 200 OK
Date: Sat, 29 Aug 2009 21:00:01 GMT
Server: Apache/1.3 (Unix) mod_ssl/2.8.28 OpenSSL/0.9.8f AuthPG/1.3 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.9
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html

<br />
<b>Parse error</b>:  syntax error, unexpected T_STRING in <b>/kunden/NUMMER/rp-hosting/NUMMER/NUMMERtypo3cms/dav/typo3conf/ext/direct_mail/res/scripts/dmailerd.php</b> on line <b>42</b><br />

Auszug aus der Datei (Zeile 40 bis 44)

if ($_SERVER['PHP_SELF']) {
        if (!defined('PATH_thisScript')) define('PATH_thisScript',str_replace('//','/', str_replace('\','/', $_SERVER['DOCUMENT_ROOT'] . $_SERVER['PHP_SELF'])));
} else {
        if (!defined('PATH_thisScript')) define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', $_ENV['_'])));
}

Könnt ihr mal eure posten? Vielen Dank,
Leo

jweiland ·

Falls noch jemand ein Problem mit dem Einrichten des cronjobs zum Versenden des Newsletters hat:

im Verzeichnis /typo3cms/tools liegt eine Datei dmail-cron.php

Sofern das TYPO3 Projekt im Verzeichnis /typo3cms/projekt1 liegt, genügt es, diese Datei in das Verzeichnis /typo3cms/projekt1/typo3conf/ext/direct_mail/res/scripts zu kopieren.

Liegt das Projekt in einem anderen Verzeichnis, muss in der Datei jeweils projekt1 durch den passenden Verzeichnisnamen ersetzt werden.

Im Kundenmenü wird dann der cronjob eingetragen mit dem Pfad typo3cms/projekt1/typo3conf/ext/direct_mail/res/scripts/dmail-cron.php aufgerufen.

Über das Kundenmenü können Intervalle bis zu 30 Minuten spezifiziert werden. Ist ein häufigeres Ausführen erforderlich, richten wir auch gerne einen cronjob alle 5 Minuten ein.

Jochen Weiland

13Yeti13 ·

Danke Herr Weiland,

die angepasste Cronjob Datei war die Lösung!

MfG

ein zufriedener Kunde :p

jweiland schrieb

Falls noch jemand ein Problem mit dem Einrichten des cronjobs zum Versenden des Newsletters hat:

im Verzeichnis /typo3cms/tools liegt eine Datei dmail-cron.php

Sofern das TYPO3 Projekt im Verzeichnis /typo3cms/projekt1 liegt, genügt es, diese Datei in das Verzeichnis /typo3cms/projekt1/typo3conf/ext/direct_mail/res/scripts zu kopieren.

Liegt das Projekt in einem anderen Verzeichnis, muss in der Datei jeweils projekt1 durch den passenden Verzeichnisnamen ersetzt werden.

Im Kundenmenü wird dann der cronjob eingetragen mit dem Pfad typo3cms/projekt1/typo3conf/ext/direct_mail/res/scripts/dmail-cron.php aufgerufen.

Über das Kundenmenü können Intervalle bis zu 30 Minuten spezifiziert werden. Ist ein häufigeres Ausführen erforderlich, richten wir auch gerne einen cronjob alle 5 Minuten ein.

Jochen Weiland

leof ·

Trotz anpassen des Pfades erscheint bei mir die Fehlermeldung:

<b>Fatal error</b>:  Cannot redeclare class language in <b>/kunden/206180_70794/rp-hosting/7620/8620/typo3cms/typo3_src-4.2.8/typo3/sysext/lang/lang.php</b> on line <b>88</b><br />

Kann mir da jemand weiterhelfen? Das hat nun ja nichts mehr mit dem php-Skript zu tun...

Danke, Leo

Razor_One ·

Keine Ahnung warum, auf einer Installation geht es, auf der anderen nicht...

Quick and dirty Lösung: require_once

typo3conf/ext/direct_mail/res/scripts/class.dmailer.php
zeile: 757

alt:
if(!is_object($LANG) ) {
require (PATH_typo3.'sysext/lang/lang.php');
$LANG = t3lib_div::makeInstance('language');

neu:
if(!is_object($LANG) ) {
require_once (PATH_typo3.'sysext/lang/lang.php');
$LANG = t3lib_div::makeInstance('language');

leof ·

ICH HABS!!!!

Es läuft wie folgt:

Zuerst wie von jweiland beschrieben vorgehen:

jweiland schrieb

im Verzeichnis /typo3cms/tools liegt eine Datei dmail-cron.php

Sofern das TYPO3 Projekt im Verzeichnis /typo3cms/projekt1 liegt, genügt es, diese Datei in das Verzeichnis /typo3cms/projekt1/typo3conf/ext/direct_mail/res/scripts zu kopieren.

Liegt das Projekt in einem anderen Verzeichnis, muss in der Datei jeweils projekt1 durch den passenden Verzeichnisnamen ersetzt werden.

Im Kundenmenü wird dann der cronjob eingetragen mit dem Pfad typo3cms/projekt1/typo3conf/ext/direct_mail/res/scripts/dmail-cron.php aufgerufen.

Über das Kundenmenü können Intervalle bis zu 30 Minuten spezifiziert werden. Ist ein häufigeres Ausführen erforderlich, richten wir auch gerne einen cronjob alle 5 Minuten ein.

Jochen Weiland

Nun kommt bei mir die Fehlermeldung

<b>Fatal error</b>:  Cannot redeclare class language in <b>/kunden/168185_70794/rp-hosting/5368/6370/typo3cms/typo3_src-4.2.8/typo3/sysext/lang/lang.php</b> on line <b>88</b><br />

Damit das nicht passiert muss die Zeile 757 der Datei typo3conf/ext/direct_mail/res/scripts/class.dmailer.php von
require (PATH_typo3.'sysext/lang/lang.php');
nach
require_once (PATH_typo3.'sysext/lang/lang.php');
abgeändert werden

Lieben Gruß,
vom glücklichen Leo :p

Gowerl ·

Hallo zusammen,
nach der Anleitung von Herrn Weiland hats auch in Typo3 Version 4.5.7 geklappt.
Besten Dank nochmals für den Tipp.
Gowerl