Linux Server & PHP

BuRNHeLL

Newbie
Hi Ho,

ich habe es jetzt schon in einige PHP-Foren probiert, aber irgendwie kann mir dort niemand helfen. Manche halten das Problem sogar für paradox.

Es geht um einen SuSe 9.0 Server, auf dem ich versuche über einen Cronjob ein PHP-Ergebnis in HTML zu speichern.

ich habe das folgende PHP-Script:

Code:
<?   
$oz = 1;
while($oz <= 10)
{
            system("/usr/bin/php home/www/web1/html/oceanmap.php $oz > home/www/web1/html/kbs/$oz.html");

     $oz++;     } 
 ?>

Wenn ich die PHP-Datei, die diesen Code beinhaltet, per Cronjob ausführen lasse, wir die entsprechende HTML Datei nicht gespeichert.

Wenn ich aber in die Shell

/usr/bin/php /home/www/web1/html/oceanmap.php 1 > /home/www/web1/html/kbs/1.html

eingebe, geht es.

Die gleiche Zeile per System-Befehl im Cronjob, geht wieder nicht.

Ich habe dem Verzeichnis, in das die HTML Datei geschrieben werden soll, schon die Rechte 777 gegeben, so dass es eigentlich zu Rechte-Problemen nicht kommen kann.

Hat irgendjemand ne Idee?
 

Sellerie

Newbie
Hi,

wenn ich das im Script :
system("/usr/bin/php home/www/web1/html/oceanmap.php ...

und das in der Shell:

/usr/bin/php /home/www/web1/html/oceanmap.php ...

vergleiche, sehe ich in dem Unteren einen führenden / vor home/, was ja auch richtig ist, bei einem absoluten Pfad.

Vielleicht machst Du den / im Script auch, sonst sucht php im gerade aktuellen Ordner den Pfad ./home/www/web1/...

hth,

ellerie
 

Sellerie

Newbie
hm,

muß man in einem Script nicht auch in der ersten Zeile den Interpreter angeben?

#! /pfad/programm

???

mfG,

ellerie
 

nbkr

Guru
Wie sieht denn die Crontab aus - evtl. wird das Script ja gar nicht richtig gestartet.
 
BuRNHeLL schrieb:
ich habe es jetzt schon in einige PHP-Foren probiert, aber irgendwie kann mir dort niemand helfen. Manche halten das Problem sogar für paradox.

Fragst du dich da nicht warum?

BuRNHeLL schrieb:
Es geht um einen SuSe 9.0 Server, auf dem ich versuche über einen Cronjob ein PHP-Ergebnis in HTML zu speichern.

Ganz klarer Fall von Datenbank, denn Daten gehören NICHT in eine Text-file!
 

Dakuan

Hacker
Vielleicht habe ich ja wieder mal was nicht verstanden, aber warum sollte man ein PHP Script über einen Cronjob starten. Reicht es nicht aus, wenn das Script erst beim Anfordern der Seite gestartet wird? Du kannst dann doch immer noch prüfen ob deine Dateien aktuell sind.
Wenn es nicht zu viele sind (bei mir bis zu 400), ist die Verzögerung durch die Neugenerierung erträglich.
Dakuan
 

oc2pus

Ultimate Guru
im cron musst du den kompletten Pfad zu php angeben:
which php <=== das sagt dir wo php steht

im script muss am Anfang stehen:
#!/usr/local/bin/php -q <== hier der Pfad zu php
<?php

....

?>

poste doch mal deine cron-zeile

NACHTRAG:
es ist besser ein bash-Script zu erstellen und dieses via cron aufzurufen.
evtl fehlt nämlich noch ein LD_LIBRARY_PATH, bzw PATH
das kann man dann im bash-Script setzen ;)
 
Hi oc2pus,

ich glaub ich hab heute meinen begriffsstutzigen Tag. Seh ich das richtig, dass er einen cronjob baut, der ein PHP-Skript ausführt um eine while-Schleife aufzurufen, die einen shell-Befehl absetzt, der wiederum ein PHP-Skript ausführen soll, dessen Ausgabe in eine html-Datei weiterleitet wird (die Schleife läuft 9 mal)? Erscheint nur mir das ein wenig, hmm sagen wir mal: umständlich?
 

oc2pus

Ultimate Guru
Geier0815 schrieb:
Hi oc2pus,
ich glaub ich hab heute meinen begriffsstutzigen Tag. Seh ich das richtig, dass er einen cronjob baut, der ein PHP-Skript ausführt um eine while-Schleife aufzurufen, die einen shell-Befehl absetzt, der wiederum ein PHP-Skript ausführen soll, dessen Ausgabe in eine html-Datei weiterleitet wird (die Schleife läuft 9 mal)? Erscheint nur mir das ein wenig, hmm sagen wir mal: umständlich?

ich habe mir sein php-Script nicht angeschaut; ich wollte nur die Lösung liefern für einen php-script Aufruf aus dem cron heraus. Ansonsten hast du recht, seh ich auch so ;)

Nachtrag: sonst machen wir gleich noch einen Grundkurs in php und bash-Programmierung...
 
Oben