PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP-Parser geht nicht -> Wie also eine Datei per CronJob ausführen?



MSVerweigerer
16-12-2002, 16:09
Hallo zusammen!

Für meinen Webserver habe ich ein PHP-Script geschrieben, das bei Aufruf die Datei /etc/exim/virtual_aliases in seine Einzelteile zerlegt und dann diese Teile in eine Datenbank einträgt, die vor diesem Eintrag erst komplett geleert wird. Das Script geht einwandfrei, das ist auch nicht das Problem, deshalb möchte ich an dieser Stelle nicht weiter darauf eingehen. Das Problem ist folgendes:

Ich möchte dieses Script jede Nacht einmal ausführen lassen per CronJob. Auch das ist mir klar, wie („crontab –e“, Eintrag „0 3 * * * /Datei“ einfügen), nur habe ich keine Ahnung, wie ich eine PHP-Datei ohne Browser ausführen lassen kann. Generell gibt es jedoch die Möglichkeit, in der ersten Zeile den Parser mit „#!/usr/bin/php4“ (der auch auf dem System vorhanden ist) einzugeben. Jedoch bei Ausführen der Datei kommt die Meldung „bad interpreter“. Hat jemand eine Ahnung, wie man das Problem beheben oder eventuell umgehen kann?

Verwendetes Serversystem ist Debian 3.0, PHP 4.1.2. Bei mir lokal läuft das Teil mit dem Parser /usr/bin/php unter Mandrake 9.0 tadellos.

Vielen Dank für jede Hilfe!

Gruß!

mehlvogel
16-12-2002, 16:55
Guckst du hier (http://www.phpbuilder.com/columns/darrell20000319.php3)

Hier gibs ne ziemlich gute Anleitung für Shellscripte per PHP. Selber hab ich sowas aber noch nicht gemacht.

The Ripper
16-12-2002, 17:18
Du musst das Paket "php4-cgi" installieren, in php4 ist der Parser nur als Apache-Modul drin

Gaert
16-12-2002, 17:49
Servus!
Trag einfach mal das in deine Crontab ein... ist viel einfacher als obiges Beispiel!



wget -O /dev/null http://localhost/phpskript.php >> /dev/null

MSVerweigerer
16-12-2002, 21:35
Hallo!

Also am hilfreichsten war mir der Link von mehlvogel. ich habe jetzt die Zeile #!/usr/bin/php4 in meinem Script in #!/usr/bin/php4 -c /etc/php4/cgi/ umgeändert und siehe da... immerhin spuckt er mir jetzt ne Fehlermeldung aus, die altbekannt ist, die zeigt, dass das Script jetzt arbeitet:

root:/etc/exim# /etc/exim/webmail.php
X-Powered-By: PHP/4.1.2
Content-type: text/html


<br />
<b>Fatal error</b>: Call to undefined function: mysql_connect() in <b>/etc/exim/webmail.php</b> on line <b>5</b><br />
root:/etc/exim#

sehr schön... also ist nur noch die Funktion mysql_connect() nicht definiert. Hat jemand hierfür auch einen Lösungsvorschlag?

Vielen Dank weiterhin!

Gruß!

Gaert
16-12-2002, 23:03
hmm... offensichtlich ist in die CGI binary mysql nicht mit reinkompiliert... da hilft vielleicht ein neu kompilieren!
Ist aber reine Spekulation!

Hat mein Vorschlag mit wget nicht funktioniert?
Ich finde das die unproblematischste lösung... habe auch lange mit dem Problem "PHP Skript per Cron ausführen" gekämpft.

MSVerweigerer
17-12-2002, 12:13
ja, doch, es funktioniert. Danke!

Hatte anfangs ein Problem bedacht: die zu verarbeitende Datei liegt ja in /etc/exim, was heißt, dass ich ja von http://localhost/ nicht drauf kann. Aber an die einfachste Variante hab ich nicht gedacht, für die Zeit der Ausführung des Scripts die benötigte Datei per CronJob in den Ordner kopieren, in dem auch das Script liegt und anschließend wieder löschen.

Nochmals Danke!

Gaert
17-12-2002, 17:56
Das is natürlich auch ne möglichkeit... wusste ja nicht dass du es nicht in reichweite des Apache hast!

MSVerweigerer
25-12-2002, 23:01
So ich habs raus! :) *stolz bin*

"php4 -q /Datei"

Funktioniert einwandfrei und macht auch keine Probleme.

Schönen Abend noch, der MSVerweigerer

Gaert
06-01-2003, 13:29
Hab mich auch noch en wenig schlau gemacht!

Schaut euch bitte mal das hier an...

http://www.php.net/manual/en/features.commandline.php