amp3s
Anmeldungsdatum: 26. Mai 2014
Beiträge: 240
|
Hallo, also ich will für den Anfang mit crontab eine PHP Datei regelmäßig ausführen lassen. LAMP ist installiert, aber es sieht für mich so aus, dass es sozusagen nicht mit crontab zusammen funktioniert. In der PHP Datei, die aufgerufen werden soll, wird auch eine mysqli-Datenbankverbindung erstellt. Für mich sieht es halt gerade so aus, dass ich Apache installieren müsste, damit es geht. Da ich mich aber nicht besonders auskenne, würde ich das gerne vermeiden, ist ja nicht ohne Grund schon LAMP installiert. In einem Beispiel, das ich gefunden habe, wird einer Zeile ein "/bin/sh" vorangestellt: #*/1 * * * * /bin/sh /opt/lampp/htdocs/script.sh Jetzt wünsche ich mir, dass es einen Parameter gibt, den ihr kennt und der dann funktioniert ☺ #*/1 * * * * /lamp/php/xy /opt/lampp/htdocs/index.php >> /opt/lampp/htdocs/log.txt 2>&1 Oder ihr wisst das ich Apache installieren muss, damit es geht, das würde mir auch weiterhelfen ☺
|
schollsky
Anmeldungsdatum: 3. Dezember 2012
Beiträge: 1729
Wohnort: Ruhrgebeat
|
Hallo amp3s, LAMP steht für: Linux, Apache, MySQL, PHP - siehe z.B. auch: https://de.wikipedia.org/wiki/LAMP_(Softwarepaket) Wie hast Du das denn installiert? Sicher nicht über die Paketverwaltung: https://packages.ubuntu.com/search?searchon=contents&keywords=lamp&mode=exactfilename&suite=lunar&arch=any Also wirst Du wohl Apache brauchen... Grüße schollsky
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17620
Wohnort: Berlin
|
amp3s schrieb: In einem Beispiel, das ich gefunden habe, wird einer Zeile ein "/bin/sh" vorangestellt: #*/1 * * * * /bin/sh /opt/lampp/htdocs/script.sh
Wenn script.sh als ausführbar markiert ist, sollte es einfach gestartet werden. Das '/bin/sh' kann dann keinen Vorteil haben. Das brauchst Du nur, wenn das Script nicht als ausführbar markiert ist.
Jetzt wünsche ich mir, dass es einen Parameter gibt, den ihr kennt und der dann funktioniert ☺ #*/1 * * * * /lamp/php/xy /opt/lampp/htdocs/index.php >> /opt/lampp/htdocs/log.txt 2>&1
Also ich kenne einen Parameter, den Du löschen musst, wenn es funktionieren soll. Den führenden Hash # - der macht aus der Zeile einen Kommentar für crontab. Okay - ein Parameter ist das nicht, vielleicht ein Prefix. Dem, was schollsky zu LAMP geschrieben hat, schließe ich mich aber auch an.
|
noisefloor
Anmeldungsdatum: 6. Juni 2006
Beiträge: 29567
|
Hallo, also grundsätzlich brauchst du zum Ausführen einer PHP Datei "nur" den PHP Interpreter, siehe z.B. PHP (Abschnitt „Installation-fuer-Kommandozeilenprogrammierung“). Dann kannst du dann zwecks Ausführung deines Skripts aufrufen. In deinem Ausgangspost wird keine PHP-Datei aufgerufen, sondern ein Shellskript. Zumindest dem Aufruf und der Dateiendung nach. Der Stand der Dinge zum periodischen Ausführen von Skripten sind systemd/Timer Units. Was aber an deinem eigentlichen Problem nichts ändert. Gruß, noisefloor
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 9702
Wohnort: Münster
|
amp3s schrieb: […] eine PHP Datei regelmäßig ausführen […]
In einem Beispiel, das ich gefunden habe, wird einer Zeile ein "/bin/sh" vorangestellt: #*/1 * * * * /bin/sh /opt/lampp/htdocs/script.sh
Es kommt auf das Skript an. Wenn dieses ein nicht selbst ausführbares Programm in der POSIX-Skriptsprache enthält, dann und nur dann ist ein Voranstellen von /bin/sh erforderlich, sonst kontraproduktiv. Da Du von PHP sprichst, ist es also vermutlich in Deinem Fall falsch. Ein ausführbares Skript sollte selbst in einer Shebang-Zeile den benötigten Interpreter angeben. Auf jeden Fall musst Du das Kommentarzeichen in erster Spalte entfernen.
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13204
|
kB schrieb:
Es kommt auf das Skript an. Wenn dieses ein nicht selbst ausführbares Programm in der POSIX-Skriptsprache enthält, dann und nur dann ist ein Voranstellen von /bin/sh erforderlich, sonst kontraproduktiv. Da Du von PHP sprichst, ist es also vermutlich in Deinem Fall falsch. Ein ausführbares Skript sollte selbst in einer Shebang-Zeile den benötigten Interpreter angeben.
Mehr Informationen zu dem Thema "Shebang" gibt es im Wiki: Shebang für Shellskripte
Auf jeden Fall musst Du das Kommentarzeichen in erster Spalte entfernen.
+1
|
amp3s
(Themenstarter)
Anmeldungsdatum: 26. Mai 2014
Beiträge: 240
|
Ich war wohl etwas ungenau. Installiert ist XAMPP für Linux. Was ich zuerst mit LAMP in Verbindung gebracht habe, aber wie von schollsky geschrieben, steht LAMP ja eher für etwas anderes. Also müsste ich eigentlich nochmal fragen, ob ihr seht, dass XAMPP für Linux reicht und ich nicht noch LAMP installieren müsste? Z.B. in dem man in die crontab, eine Variable setzt, die dazu führt, dass mit XAMPP für Linux interagiert wird!? Wenn ich noch LAMP hätte, hätte ich ja PHP und MariaDB doppelt, was, wenn es überhaupt funktioniert, in der Praxis auch stören würde. Geht man dann z.B. zu http://localhost/phpmyadmin, gehört das zu XAMPP für Linux oder zu LAMP ? ☺ Wenn dieses XAMPP/LAMP Chaos nicht mehr wäre, würde es wohl auch mit systemd/Timer Units weitergehen, statt Cron.
|
Akedia
Anmeldungsdatum: 3. Januar 2018
Beiträge: 92
|
Chaos droht nur, wenn Du mit Werkzeugen hantierst, die Du nicht verstanden hast. Wenn Deine Beschreibung vollständig ist, benötigst Du eigentlich nur PHP und MariaDB. Ob das aus XAMPP, LAMP oder einer direkten Installation von PHP und MariaDB stammt, ist letztendlich egal. Der PHP-Interpreter muss dann nur auf der Kommandozeile bzw. im cron-Eintrag gefunden werden (Suchpfad bzw. Pfadangabe). Der Link auf die PHP Installation für Kommandozeilenprogrammierung ist ja oben schon vorhanden ...
|
noisefloor
Anmeldungsdatum: 6. Juni 2006
Beiträge: 29567
|
Hallo, also in der Regel sollte es reichen, wenn man PHP und MariaDB aus den Paketquellen installiert, da muss man nicht wirklich auf was externes zurück greifen. Macht auch das aktualisieren einfacher. Bevor du das ggf. installierst solltest du aber dann vorher besser den XAMPP vollständig deinstallieren. Gruß, noisefloor
|
amp3s
(Themenstarter)
Anmeldungsdatum: 26. Mai 2014
Beiträge: 240
|
Das Beispiel mit der script.sh habe ich nur gebracht, um aufzuzeigen und zu fragen, ob über einen Parameter oder Sheebang, eine Ausführung im "XAMPP für Linux"-Kontext möglich ist. Mit einer manuellen Installation von PHP, mysql und mariadb, bin ich jetzt nicht weiter gekommen ... Aber mit LAMP ohne XAMPP würde es bestimmt gehen.
|
noisefloor
Anmeldungsdatum: 6. Juni 2006
Beiträge: 29567
|
Hallo, was meinst du denn mit "XAMPP für Linux" Kontext? XAMPP kopiert ja auch "nur" Dateien nach einem Schema an einen bestimmten Ort und bringt einen gewissen Satz an Konfiguration mit. Mit deinem eigentlichen Problem, also dem periodischen Ausführen einer PHP-Skripts hat das eigentlich so rein gar nichts zu tun. Außer das du den Ort kennen solltest, wo der XAMPP Installer den PHP Interpreter hin kopiert hat.
Mit einer manuellen Installation von PHP, mysql und mariadb, bin ich jetzt nicht weiter gekommen
Heißt was genau? Welche Fehlermeldungen hast du bekommen? Und MySQL und MariaDB parallel installieren macht selten Sinn bzw. ist selten notwendig. Gruß, noisefloor
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 13204
|
amp3s, bitte trenne das dringend:
Hier können wir gerne die timerbasierte Ausführung disktutieren. Für die Probleme mit der Installation (die natürlich zuerst gelöst werden müssen, bevor man überhaupt an die regelmäßige Ausführung denken kann) eröffne bitte ein Thema hier.
Möglicherweise wäre die Lektüre von https://en.wikipedia.org/wiki/XAMPP und XAMPP hilfreich.
|
Akedia
Anmeldungsdatum: 3. Januar 2018
Beiträge: 92
|
amp3s schrieb:
Mit einer manuellen Installation von PHP, mysql und mariadb, bin ich jetzt nicht weiter gekommen ... Aber mit LAMP ohne XAMPP würde es bestimmt gehen.
Wie kommst Du darauf? Ein wesentlicher Unterschied zwischen LAMP und XAMPP ist das L (Linux) und X ("beliebiges" System). Das X ist in Deinem Fall Linux ... Ehe Du alles parallel und drunter und drüber installierst, informier Dich, was Du wirklich brauchst. Akedia schrieb: ... benötigst Du eigentlich nur PHP und MariaDB. Ob das aus XAMPP, LAMP oder einer direkten Installation von PHP und MariaDB stammt, ist letztendlich egal. Der PHP-Interpreter muss dann nur auf der Kommandozeile bzw. im cron-Eintrag gefunden werden (Suchpfad bzw. Pfadangabe).
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4686
Wohnort: Berlin
|
Bevor es in die crontab wandert wäre es auch sinnvoll erst einmal zu testen ob es denn manuell aufgerufen funktioniert/das macht was gewünscht ist.
|