Beiträge: 3.343
Themen: 91
Registriert seit: Dec 2010
Ich wollte für den Scheduler bei TYPO3 einen Cronjob einrichten. Nachdem ich bemerkt hatte, dass der Cronjob offenbar nicht funktionierte, habe ich das Skript "cli_dispatch.phpsh scheduler" mal direkt in der Shell aufgerufen.
Dabei kam folgende Fehlermeldung:
The first argument must be a valid key.
X-Powered-By: PHP/5.3.13
Content-type: text/html
PHP läuft auf dem Server als CGI.
Googlen hat mir nicht wirklich geholfen, ich fand keinen Lösungsansatz, den ich verstanden hätte.
Hat jemand eine Idee, was ich hier machen könnte, damit das Skript richtig funktioniert?
Beiträge: 3.343
Themen: 91
Registriert seit: Dec 2010
So, ich habe gerade eben die Lösung gefunden.
Es lag an dem php.ini-Parameter register_argc_argv.
Obwohl dieser laut phpinfo() in der globalen php.ini des Server On war, musste ich ihn in der von mir für die Domain modifizierten php.ini noch mal extra auf on setzen, also register_argc_argv = On
Danach hat die Parameterübergabe an das Skript funktioniert und der Cronjob läuft wie erwartet.
Beiträge: 1.203
Themen: 10
Registriert seit: Feb 2011
11.09.2012, 09:04
(Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2012, 09:06 von rpflamm.)
also ich rufe meine immer im cron so auf:
Code: /usr/bin/php -c /var/www/vhosts/domain.tld/etc/php.ini /var/www/vhosts/domain.tld/htdocs/typo3/cli_dispatch.phpsh scheduler
Aber ob es an der Konfigurationsdatei liegt, die ich mit einbinde, wage ich zu bezweifeln.
Den "_cli_scheduler" Benutzer hast du sicherlich auch angelegt, sonst würde ein anderer Fehler kommen...
Rufst du das Script mit dem Vollständigen Pfad auf? Oder per "./cli_dispatch.phpsh"? Wenn ich das richtig verstanden habe wird ein Absoluter Pfad vorausgesetzt.
Eventuell mal noch folgendes versuchen:
Code: // mimic CLI API in CGI API (you must use the -C/-no-chdir and the -q/--no-header switches!)
Also:
Code: /usr/bin/php -C -q /var/www/vhosts/domain.tld/htdocs/typo3/cli_dispatch.phpsh scheduler
EDIT:
(11.09.2012, 08:55)wolfgang schrieb: So, ich habe gerade eben die Lösung gefunden.
Ich schreibe zu langsam
Beiträge: 3.343
Themen: 91
Registriert seit: Dec 2010
Ich war leider zu voreilig. Heute Mittag ging es einmal, heute Abend kommt wieder die gleiche Fehlermeldung, und im TYPO3-Backend sehe ich auch, das der geplante Task nicht ausgeführt wurde.
Ich rufe das Skript über den absoluten Pfad auf. Dein letzter Vorschlag mit -C -q hat auch nichts gebracht, es kommt die gleiche Fehlermeldung.
Beiträge: 149
Themen: 3
Registriert seit: Jan 2011
13.09.2012, 03:50
(Dieser Beitrag wurde zuletzt bearbeitet: 13.09.2012, 03:50 von virtualmachine.)
Okay, dann müsste man mal etwas näher drauf schauen:
Ruf den Interpreter mal mit so auf:
Achte darauf, dass es der gleiche Interpreter ist, wie der, den der Webserver aufruft.
Zeig doch bitte außerdem den relevanten Teil deiner crontab:
Code: crontab -l | grep scheduler
Dein Fehler weist darauf hin, das Du die cgi-binary für den Cronjob aufrufst..
Beiträge: 3.343
Themen: 91
Registriert seit: Dec 2010
Okay, hier mal die Ausgaben:
Code: xxx@www561:~$ /usr/local/php-5.3/bin/php -v
PHP 5.3.13 (cgi-fcgi) (built: May 29 2012 16:28:35)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
EIntrag in der crontab:
Code: */30 * * * * /usr/local/php-5.3/bin/php /absoluter/pfad/zum/skript/t3see.de/www/v2/typo3/cli_dispatch.phpsh scheduler
Ich habe nur den Pfad zum Skript für die Anzeige hier geändert, da steht natürlich der korrekte Pfad in der crontab.
Beiträge: 149
Themen: 3
Registriert seit: Jan 2011
Kram doch da mal drin rum.. Da schimmeln bestimmt noch andere binaries rum:
ls - Al /usr/local/php-5.3/bin | grep php
Und interessant wäre auch, ob da noch woanders welche rum liegen.. Vielleicht mag dein Provider keine eigenen Skripte auf der Shell?
Im Zweifelsfall fragst du die mal um rat-die haben es schließlich selbst kompiliert..
Viele Grüße,
Cedric
Gesendet von meinem Galaxy Tab 10.1N
Beiträge: 3.343
Themen: 91
Registriert seit: Dec 2010
Der Pfad stimmt schon. Da wären noch ältere PHP-Versionen zur Verfügung, aber ich nutze die 5.3.
Doch, Skripte darf man ausführen, das sollte nicht das Problem sein.
Hier trotzdem mal die Ausgabe:
Code: xyz@www561:~$ ls -Al /usr/local/php-5.3/bin | grep php
-rwxr-xr-x 1 root root 25183907 2012-05-30 15:35 php
-rwxr-xr-x 1 root root 24626757 2012-02-03 11:57 php_5.3.10_20120203
-rwxr-xr-x 1 root root 25183907 2012-05-30 15:35 php_5.3.13_20120530
-rwxr-xr-x 1 root root 23912936 2010-05-11 15:45 php_5.3.2_20100511
-rwxr-xr-x 1 root root 24284132 2010-12-03 16:37 php_5.3.3_20101203
-rwxr-xr-x 1 root root 24540069 2011-01-18 12:45 php_5.3.5_20110118
-rwxr-xr-x 1 root root 24597454 2011-09-05 11:17 php_5.3.8_20110905
-rwxr-xr-x 1 root root 24624885 2012-01-24 11:17 php_5.3.9_20120124
-rwxr-xr-x 1 root root 25183907 2012-05-30 15:35 php-cgi
-rwxr-xr-x 1 root root 24626757 2012-02-03 11:57 php-cgi_5.3.10_20120203
-rwxr-xr-x 1 root root 24284132 2010-12-03 16:37 php-cgi_5.3.3_20101203
-rwxr-xr-x 1 root root 24540069 2011-01-18 12:45 php-cgi_5.3.5_20110118
-rwxr-xr-x 1 root root 24597454 2011-09-05 11:17 php-cgi_5.3.8_20110905
-rwxr-xr-x 1 root root 24624885 2012-01-24 11:17 php-cgi_5.3.9_20120124
-rwxr-xr-x 1 root root 25138406 2012-05-30 15:33 php-cli
-rwxr-xr-x 1 root root 24584128 2012-02-03 11:57 php-cli_5.3.10_20120203
-rwxr-xr-x 1 root root 25138406 2012-05-30 15:33 php-cli_5.3.13_20120530
-rwxr-xr-x 1 root root 23866491 2010-05-11 15:45 php-cli_5.3.2_20100511
-rwxr-xr-x 1 root root 24237615 2010-12-03 16:37 php-cli_5.3.3_20101203
-rwxr-xr-x 1 root root 24493536 2011-01-18 12:45 php-cli_5.3.5_20110118
-rwxr-xr-x 1 root root 24553313 2011-09-05 11:16 php-cli_5.3.8_20110905
-rwxr-xr-x 1 root root 24582344 2012-01-24 11:16 php-cli_5.3.9_20120124
-rwxr-xr-x 1 root root 3168 2010-05-11 15:46 php-config
-rwxr-xr-x 1 root root 4518 2010-05-11 15:46 phpize
Beiträge: 149
Themen: 3
Registriert seit: Jan 2011
14.09.2012, 19:18
(Dieser Beitrag wurde zuletzt bearbeitet: 14.09.2012, 19:21 von virtualmachine.)
(14.09.2012, 12:39)wolfgang schrieb: Der Pfad stimmt schon. Da wären noch ältere PHP-Versionen zur Verfügung, aber ich nutze die 5.3.
Doch, Skripte darf man ausführen, das sollte nicht das Problem sein.
Hier trotzdem mal die Ausgabe:
Code: xyz@www561:~$ ls -Al /usr/local/php-5.3/bin | grep php
-rwxr-xr-x 1 root root 25138406 2012-05-30 15:33 php-cli
Da haben wir die Antwort:
Probiere es mit folgender:
/usr/local/php-5.3/bin/php-cli /pfad/zum/Skript scheduler
Ich bin mir sehr sicher :-)
Also einmal so ohne cron ausprobieren und wenn es nicht klappt, dann bitte einmal /pfad/zur/php-cli -v
Was das problem ist: im Normalfall kommen beim kompilieren 3 Binaries raus: php, php-cgi und eine fcgi Variante (je nach Konfiguration..). Wobei der "normale" Interpreter eigentlich die cli Variante sein sollte..
Bei deinem Hoster ist das ein wenig anders.. Mich würde zum Spass noch folgendes Kommando interessieren: which php
// edit: falscher pfad oops
Viele Grüße,
Cedric
Gesendet von meinem Galaxy Tab 10.1N
Beiträge: 3.343
Themen: 91
Registriert seit: Dec 2010
Das manuelle Ausführen hat jetzt funktioniert
Morgen weiss ich dann, ob der Cronjob automatisch abgearbeitet wurde.
which php gibt aus: /usr/local/php-5.3/bin/php
Deshalb hatte ich auch diesen Pfad benutzt.
|