Nach Update auf 1.7 - Cronjob läuft nicht mehr

Hallo Leute,

nachdem ich das Update auf 1.7 vollzogen habe (alles scheint ok) läuft mein Cronjob nicht mehr. Folgende Meldung kommt:

/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.php: 1: cannot open ?php: No such file
/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.php: 28: =: not found
/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.php: 29: /aquota.group: Permission denied
/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.php: 30: Ideas: not found
/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.php: 31: -: not found
/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.php: 32: -: not found
/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.php: 33: -: not found
/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.php: 34: -: not found
/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.php: 35: -: not found
/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.php: 36: -: not found
/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.php: 37: -: not found
/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.php: 38: Syntax error: “(” unexpected

Weiß jemand Rat und kann mir helfen? Vielen Dank schon mal im Voraus

Hallo Gemeinde,

hat denn gar keiner eine Idee???

Da braucht es noch ein paar Informationen…

Was für ein Server? ist die php-cli installiert? Hat der Cronjob genügend Rechte um das Script auszuführen? Wie sieht dein Cronjob Script aus?

Hallo Noval,

erst mal rech herzlichen Dank für die Rückmeldung.

Ich hatte den Cronjob bislang immer erfolgreich eingesetzt. Er lief also bis vor dem Update auf 1.7 einwandfrei. Ich habe nach dem Update lediglich, so wie im Piwik-Blog beschrieben, die “archive.sh” gegen die “archive.php” ersetzt. Sonst wurde nichts geändert. Und das funktioniert eben nicht.

Server Ubuntu Linux 64bit bei Host Europe mit Root-Rechten

Der Cronjob wurde in Plesk direkt eingerichtet und lautet: /var/www/vhosts/krefft-medien.com/httpdocs/template/misc/cron/archive.php (funkioniert nicht, siehe ersten Post…)
vorher war er folgendermassen: /var/www/vhosts/krefft-medien.com/httpdocs/template/misc/cron/archive.sh (funktionierte bei 1.6 einwandfrei)

Tach Rusty

Der Verdacht bleibt der Gleiche…

Wahrscheinlich hat dein Cronjob nicht genügend Zugriffsrechte auf die neue PHP-Datei. Oder der Cronjob sitzt nicht in der selben Benutzergruppe wie der Webserver. Was ist wenn du den Cronjob als Root ausführst? Oder der Datei Test weise 777 Rechte vergibst?

Zusätzlich kannst du auch mal sehen was das Logfile ausspuckt. Dazu solltest du die Ausgabe nicht in die /dev/null Hölle senden, sonder eine konkrete Datei angeben /home/deinbenutzer/archive.log

Das sollte dir ein wenig Spielraum geben.

Gruss Chris

Hallo Chris,

also, sowohl der als Root in Plesk festgelegte Eintrag des Cronjobs, als auch die manuelle Ausführung des Cronjobs per SSH (Als Server-Root, nicht als Domain-Root) führen zu den o. g. Fehlern. Die Änderung des CHMOD auf 777 der “archive.php” hat daran auch nichts geändert. Komisch ist, dass im logfile gar nichts zu finden ist, oder ich übersehe es mit entspr. Konsequenz.

Hi Rusty

Interessant… wenn du das nicht mal per ssh ausführen kannst dann stellt sich mir die Frage:
Ist die php-cli denn installiert?

Gruss Chris

Hallo Chris,

nun habe ich den Support von Host Europe kontaktiert. Dieser hat mir bestätigt, dass PHP-CLI standardmäßig installiert ist.Und zwar unter /usr/bin/php.

Mal eine ganz dummer Frage: Kann es sein, dass die Datei “archive.php” noch editiert werden muss? Wenn ja,wäre ich für eine Hilfe dankbar.

Dort steht:

<?php $USAGE = " Usage: /path/to/cli/php \"".@$_SERVER['argv'][0]."\" [arguments] Mich verwirren die einzelnen Anführungszeichen oben....

Hi, die Datei muss nicht editiert werden.
Bitte die archive.php neu hochladen mit FTP-Modus binary. Allein schon die Zeile “cannot open ?php: No such file " ist merkwürdig, da dort erst das PHP-Tag aufgeht. Evtl ist die Klammer verloren gegangen (”<") oder es gibt ein Encoding-Problem (UTF8, BOM, etc.).

Das File muss generell nicht mehr editiert werden.

Grüße

Also…

ich habe die Datei “archive.php” nochmals im Binär-Modus hochgeladen -> Gleiches Resultat

Dann habe ich die Datei wegen des vermutlich nicht vorhandenen “<” Open Tags überprüft. Dieser ist vorhanden, aber ich sehe. Der schließende Tag fehlt… Also “?>” am Ende hinzugefügt… -> Gleiches Resultat.

Was stimmt also an der Datei nicht?

Hier mal die ersten 50 Zeilen… Übrigens: Die Zeile “define(‘PIWIK_INCLUDE_PATH’, realpath( dirname(FILE).”/…/…" ));" meckert er auch immer an, wegen eines Syntaxfehlers…

<?php $USAGE = " Usage: /path/to/cli/php \"".@$_SERVER['argv'][0]."\" [arguments] Arguments: --force-all-websites If specified, the script will trigger archiving on all websites. This can be used along with --force-all-periods to trigger archiving on all websites and all periods. --force-all-periods[=seconds] Triggers archiving on websites with some traffic in the last [seconds] seconds. [seconds] defaults to 604800 which is 7 days. For example: --force-all-periods=86400 will archive websites that had visits in the last 24 hours. --force-timeout-for-periods=[seconds] The current week/ current month/ current year will be processed at most every [seconds]. If not specified, defaults to 3600. --help Displays usage Notes: * You should probably run this script without any parameter (default). * This script should be executed every hour via crontab, or as a deamon. * You can also run it via http:// by specifying the Super User &token_auth=XYZ as a parameter ('Web Cron'), but it is recommended to run it via command line/CLI instead. * If you use Piwik to track dozens/hundreds of websites, please let the team know at hello@piwik.org it makes us happy to learn successful user stories :) * Enjoy! "; /* Ideas for improvements: - Feature request: Add option to log completion even with errors: archive_script_ignore_errors = 0 - Known bug: when adding new segments to preprocess, script will assume that data was processed for this segment in the past - Document: how to run the script as a daemon for near real time / constant processing - The script can be executed multiple times in parrallel but with known issues: - scheduled task could send multiple reports - there is no documentation - it does not work well with --force-all-periods etc. - Possible performance improvement: Run first websites which are faster to process (weighted by visits and/or time to generate the last daily report) This would make sure that huge websites do not 'block' processing of smaller websites' reports. - Core: check that on first day of month, if request last month from UI, it returns last temporary monthly report generated, if the last month haven't yet been processed / finalized */ define('PIWIK_INCLUDE_PATH', realpath( dirname(__FILE__)."/../.." )); define('PIWIK_USER_PATH', PIWIK_INCLUDE_PATH); define('PIWIK_ENABLE_DISPATCH', false); define('PIWIK_ENABLE_ERROR_HANDLER', false); define('PIWIK_ENABLE_SESSION_START', false); define('PIWIK_MODE_ARCHIVE', true); require_once PIWIK_INCLUDE_PATH . "/index.php"; require_once PIWIK_INCLUDE_PATH . "/core/API/Request.php";

Du musst
/usr/bin/php /archive.php
ausführen / eintragen.

So ist es auch unter How to Set up Auto-Archiving of Your Reports - Analytics Platform - Matomo beschrieben.
Im Blog steht nur, dass archive.php die archive.sh ersetzt, nicht dass Du es einfach beim Aufruf ersetzen kannst ;-).

Hallo Thomas,

also jetzt komme ich völlig durcheinander…

Mein bisheriger Cronjob (Version 1.6) war:
/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.sh -> Hat funktioniert

Mein jetziger Cronjob ist:
/var/www/vhosts/beispiel.com/httpdocs/piwik/misc/cron/archive.php -> funktioniert nicht.

Ich seh jetzt langsam den Wald vor lauter Bäumen nicht mehr… was ist daran falsch? In dem vom Dir zitierten Blog wurde die archive.sh doch auch gegen die archive.php ausgetauscht? Oder sehe ich das jetzt völlig falsch?

Das ausgetauscht heisst aber nicht, dass der Aufruf gleich geblieben ist.
Du musst /usr/bin/php noch davor schreiben, damit es mit php ausgeführt wird.

Hallo Thomas,

vielen Dank für den Hinweis. Da habe ich doch wirklich den Wald vor lauter Bäumen nicht mehr gesehen. Es funktioniert jetzt.

Vielen Dank an alle, die sich meiner Posts angenommen haben.