Hi!
Bei mir war es etwas komplizierter. Ich will das den anderen nicht vorenthalten:
Ich habe auch die Änderungen am Script vornehmen müssen. Bei mir lag php im Verzeichnis /usr/bin/. Um das herauszufinden muss man nur
which php
in die Konsole eingeben. Dann schreibt einem das Betriebssystem, welches "php" man verwendet. Meine Ausgabe sieht so aus:
/usr/bin/php
Nachdem ich nun diese Änderungen am Script vorgenommen hatte erhielt ich schöne Fehlermeldungen. So zum Beispiel:
Wrong path... This "sr/bin" should be the last part of "usr/bin".
Das brachte mich ein wenig aus der Ruhe, denn unumstritten IST "sr/bin" das Ende von "usr/bin".
Wie auch immer. Ich dachte mir, dann müssen die Pfade falsch sein und fing an die define-Angaben zu tunen. Ohne wirklichen Erfolg. Die Hardcore-Angabe des Verzeichnissen ($dir) half auch nicht wirklich.
Dann fiel mir ein, dass wir hier eine globale Kopie von Typo3 für alle unsere Webpräsenzen verwenden, d.h. wir haben die Verzeichnisse typo3, t3lib, tslib und misc per symbolischen Link in unsere einzelnen Webseiten eingebunden.
Dann konnten die Pfade auch nicht richtig sein, denn durch den link hieß das typo3-verzeichnis jetzt
/Library/WebServer/Documents/typo3_aktuell/typo3
und nicht
/Library/WebServer/Documents/www.domain.de/typo3
Mist. Also habe ich die Links für diese Domain gelöscht und die Inhalte aus den Verzeichnissen (typo3, t3lib ...) kopiert. Dann habe ich den Job nochmals per
/usr/bin/php -q /Library/WebServer/Do../typo3/ext/direct_mail/mod/dmailer.phpcron
getestet, aber ich erhielt erneute Fehlermeldungen (cannot instantiate class ... usw.). Also habe ich die Verzeichniss nochmal getestet und abgeändert.
Folgende Einstellungen waren vorher im Script
$dir = dirname($HTTP_ENV_VARS["_"]);
define("PATH_typo3", dirname(dirname(dirname($dir)))."/");
define("PATH_site", dirname(PATH_typo3)."/");
define("PATH_t3lib", PATH_typo3."t3lib/");
define("PATH_typo3conf", PATH_site."typo3conf/");
define('TYPO3_MODE','BE');
Und das habe ich eingesetzt
$dir = $HTTP_ENV_VARS["PWD"];
define("PATH_typo3", dirname(dirname(dirname($dir)))."/");
define("PATH_site", dirname(PATH_typo3)."/");
define("PATH_t3lib", PATH_site."t3lib/");
define("PATH_typo3conf", PATH_site."typo3conf/");
define('TYPO3_MODE','BE');
Man beachte, dass ich als Environment-Variable statt "_", "PWD" verwende. Dort steht bei mir nämlich der Pfad korrekt (getestet per print_r($HTTP_ENV_VARS)😉.
Dann ist definitiv der Pfad für t3lib falsch. Das kann eigentlich überhaupt nicht funktionieren, denn wenn ich einen Pfad nehme und typo3 anhänge (define("PATH_site", dirname(PATH_typo3)."/")) und dann diesen Pfad nehme und t3lib anhänge, dann ist das falsch.
Das Ergebnis ist
bla/blub/foo/bar/typo3/t3lib
Laut der Standardinstallation von typo3 liegen die Verzeichnisse typo3 und t3lib auf der selben Ebene.
Also muss auch diese Angabe abgeändert werden (siehe Änderungen).
So und auf einmal funktionierte das Script ohne Fehlermeldungen.
Grüße
McGregor