Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Scheduler: cli_dispatch.phpsh gibt Fehler aus
#1
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?
Zitieren
#2
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.
Zitieren
#3
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 Big Grin
MfG René
Systemadministrator, Webentwickler

pantanet.de - pantamedia.com - gosna.de

Wishlist
Zitieren
#4
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.
Zitieren
#5
Okay, dann müsste man mal etwas näher drauf schauen:

Ruf den Interpreter mal mit so auf:
Code:
/path/to/php -v
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..
Zitieren
#6
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.
Zitieren
#7
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
Zitieren
#8
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
Zitieren
#9
(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
Zitieren
#10
Das manuelle Ausführen hat jetzt funktioniert Smile
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.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste