Willkommen im Zyxel Community Forum!

Für Support Anfragen besuchen Sie http://support.zyxel.eu unser neues Support Portal!
Aktuelle Zeit: Mittwoch 26. April 2017, 02:19

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]



 

Forumsregeln


Achtung: Tweaks ist eine Zusatzanwendung, für die ZyXEL keinen Support übernimmt!

Bei Fragen zu Tweaks wenden Sie sich öffentlich an das Forum für Unterstützung.



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Cronjob .php laden
BeitragVerfasst: Montag 9. Januar 2017, 16:21 
Offline
Mitglied

Registriert: Donnerstag 20. Dezember 2012, 19:24
Beiträge: 41
Wohnort: Kiel
Hallo Ihr lieben
ich bin einmal wieder zu blöde ich habe mich Dumm und Dusselig gegoogel und komme trotzdem nicht weiter.

unter Tweaks habe ich bereits eine automatische Ip Aktualisierung auf einen DNS Dienst , alles gut und schön
nun soll zusätzlich jeden tag um 08:05 uhr eine .php Datei im verzeichnis geladen werden, die ein Script ausführt.

das web-verzeichnis ist: http://[IP]/MyWeb/php/pfad.php
über "$_SERVER['DOCUMENT_ROOT'];" bekomme ich folgendes angezeigt:
Code:
/usr/local/apache/htdocs


soweit ich gelesen habe, wird als erstes die Minute angegeben, dann die Stunde.
Code:
05 08 * * * /usr/local/apache/htdocs/cronj.php

leider passiert nichts, das Script was dann über die datei (cronj.php) ausgeführt werden soll verschickt eine eMail.

was muss ich denn jetzt genau eintragen, damit die Datei geladen wird ?
wahrscheinlich bin ich völlig falsch davor.

liebe grüße


Nach oben
 Profil  
 
 
 Betreff des Beitrags: Re: Cronjob .php laden
BeitragVerfasst: Montag 9. Januar 2017, 20:59 
Offline
Open Source Hero

Registriert: Dienstag 24. Juni 2008, 10:33
Beiträge: 2118
rich hat geschrieben:
das web-verzeichnis ist: http://[IP]/MyWeb/php/pfad.php
über "$_SERVER['DOCUMENT_ROOT'];" bekomme ich folgendes angezeigt:
Code:
/usr/local/apache/htdocs


soweit ich gelesen habe, wird als erstes die Minute angegeben, dann die Stunde.
Code:
05 08 * * * /usr/local/apache/htdocs/cronj.php
  • In that case the path to the script should be at least /usr/local/apache/htdocs/MyWeb/php/cronj.php
  • PHP is an installable zypkg, which in this case means that php is not in the PATH. So you should provide that. Something like
    Code:
    5 8 * * * PATH=/i-data/sysvol/.PKG/PHP-MySQL-phpMyAdmin/bin:$PATH /usr/local/apache/htdocs/MyWeb/php/cronj.php
    I'm not sure if the php binary is in that directory. You should check that.
  • If php can be found by crond, it's not enough yet. Php won't be able to find it's libs. So that has to be specified in LD_LIBRARY_PATH:
    Code:
    5 8 * * * LD_LIBRARY_PATH=/i-data/sysvol/.PKG/PHP-MySQL-phpMyAdmin/lib PATH=/i-data/sysvol/.PKG/PHP-MySQL-phpMyAdmin/bin:$PATH /usr/local/apache/htdocs/MyWeb/php/cronj.php
    (That is a single line).
  • crond doesn't magically know that a .php script has to be executed using php. So you either have to actually call php:
    Code:
    <snip>  php /usr/local/apache/htdocs/MyWeb/php/cronj.php
    or specify it in the she-bang. So the script has to start with
    Code:
    #! php
    or
    Code:
    #! /i-data/sysvol/.PKG/PHP-MySQL-phpMyAdmin/bin/php
    In the latter case you might omit the PATH. I'm not sure. Depends on if the php binary needs to find some friends.
    In both cases the script should have the executable bit set.
    Code:
    chmod a+x /usr/local/apache/htdocs/MyWeb/php/cronj.php

For trouble shooting it's always easier to first make sure you can execute your command from the command prompt, before trying it in crond. On the NAS crond has no way to report errors.


Nach oben
 Profil  
 
 
 Betreff des Beitrags: Re: Cronjob .php laden
BeitragVerfasst: Dienstag 10. Januar 2017, 15:01 
Offline
Mitglied

Registriert: Donnerstag 20. Dezember 2012, 19:24
Beiträge: 41
Wohnort: Kiel
Hallo , vielen dank für deine Antwort.

ich habe mal das erste versucht,
als antwort bekomme ich folgendes:

49 14 * * * PATH=/i-data/sysvol/.PKG/PHP-MySQL-phpMyAdmin/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/zyxel/sbin:/usr/local/zy-pkgs/bin:/zyxel/htp /usr/local/apache/htdocs/MyWeb/php/cronj.php

aus /PHP-MySQL-phpMyAdmin/bin:$PATH
änderung in:
/PHP-MySQL-phpMyAdmin/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/zyxel/sbin:/usr/local/zy-pkgs/bin:/zyxel/htp /

das kann doch nicht korrekt sein oder ?!

und /htp / finde ich auch recht komisch.

das selbe macht er auch bei LD_LIBRARY_PATH






Zitat:
<snip> php /usr/local/apache/htdocs/MyWeb/php/cronj.php

Zitat:
#! php

Zitat:
#! /i-data/sysvol/.PKG/PHP-MySQL-phpMyAdmin/bin/php


dies sind 3 Möglichkeiten, in die Datei einzufügen ? (im header der cronj.php ??)

also als Beispiel:
Code:
#! /i-data/sysvol/.PKG/PHP-MySQL-phpMyAdmin/bin/php

<?php
...
...
?>


ist das Korrekt !?

liebe grüße


Nach oben
 Profil  
 
 
 Betreff des Beitrags: Re: Cronjob .php laden
BeitragVerfasst: Dienstag 10. Januar 2017, 21:28 
Offline
Open Source Hero

Registriert: Dienstag 24. Juni 2008, 10:33
Beiträge: 2118
rich hat geschrieben:
aus /PHP-MySQL-phpMyAdmin/bin:$PATH
änderung in:
/PHP-MySQL-phpMyAdmin/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/zyxel/sbin:/usr/local/zy-pkgs/bin:/zyxel/htp /
I guess you are talking about what you see in the 'Tweaks editbox'? That is a bug, more or less. Tweaks itself is a big shell script, and by storing and re-reading the crontab entries somehow the environment variables got resolved. A work around can be to create a shell script, which calls the php script. That's not hard:
Code:
#! /bin/sh

LD_LIBRARY_PATH=<...> PATH=<...> /path/to/phpscript
You'll have to set the executable bit, and then you can call the shell script from crond.
Zitat:
und /htp / finde ich auch recht komisch.
Are you sure that last / is not the first character of /usr/.. ?
Zitat:
dies sind 3 Möglichkeiten, in die Datei einzufügen ? (im header der cronj.php ??)
Only the last 2. The first one is a way to explicitly invoke php.
Zitat:
ist das Korrekt !?
About the she-bang, yes. Don't know about the php part. A line starting with a '#' is in many languages a comment, and so ignored by the script engine itself. In Linux (and other Unix variants) in an executable text file a first line starting with '#!' is supposed to specify the script engine. This way the OS can execute all kinds of scripts, without having to be capable to recognize all script languages. (And it can't rely on the extension. It's not mandatory.)
You can also add commandline switches. If you put '#! php --someswitch' on the first line, the OS will actually execute 'php --someswitch /path/to/script'


Nach oben
 Profil  
 
 
 Betreff des Beitrags: Re: Cronjob .php laden
BeitragVerfasst: Mittwoch 11. Januar 2017, 11:46 
Offline
Mitglied

Registriert: Donnerstag 20. Dezember 2012, 19:24
Beiträge: 41
Wohnort: Kiel
Hallo,

Zitat:
I guess you are talking about what you see in the 'Tweaks editbox'?

Richtig, in dem Bild kann man den Pfad und das Leerzeichen hinter /htp erkennen.
Dateianhang:
Tweaks.JPG


Zitat:
A work around can be to create a shell script, which calls the php script. That's not hard:

ich bin mir nicht sicher, ob ich das richtig verstanden habe und wenn ja, ob dies so richtig ist.
Dateianhang:
Tweaks 2.JPG


in der cronj.php sieht der Quelltext dann wie folgt aus:
Code:
#! php

<?php
...
Script
...
?>




Sorry für die Unannehmlichkeiten,
ich hab eben mal Youtube geschaut und das verwirrt noch mehr, wenn man so etwas noch nie gemacht hat
und sich nicht wirklich mit Cron auskennt.

eigentlich dachte ich, dass es ganz leicht geht,
einen Cronjob zu erstellen in dem man einfach in das Textfeld den Befehl eingibt, was er machen soll:

05 08 * * * /usr/www/php/Datei.php

also jeden Tag um 08:05 Uhr die Datei laden und ausführen.
Fertig.

scheint alles doch etwas Komplizierter zu sein.

liebe grüße


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
 
 
 Betreff des Beitrags: Re: Cronjob .php laden
BeitragVerfasst: Mittwoch 11. Januar 2017, 14:45 
Offline
Open Source Hero

Registriert: Dienstag 24. Juni 2008, 10:33
Beiträge: 2118
rich hat geschrieben:
ich bin mir nicht sicher, ob ich das richtig verstanden habe und wenn ja, ob dies so richtig ist.
No, the idea is to put a shell script next to the php script, and call that script from crond:
Code:
05 08 * * * /usr/local/apache/htdocs/MyWeb/php/cronjstarter.sh

The shell script contains
Code:
#! /bin/sh

LD_LIBRARY_PATH=/i-data/sysvol/.PKG/PHP-MySQL-phpMyAdmin/lib PATH=/i-data/sysvol/.PKG/PHP-MySQL-phpMyAdmin/bin:$PATH /usr/local/apache/htdocs/MyWeb/php/cronj.php
This way all whacky stuff is outside crontab.

[quote]eigentlich dachte ich, dass es ganz leicht geht,
einen Cronjob zu erstellen in dem man einfach in das Textfeld den Befehl eingibt, was er machen soll:

05 08 * * * /usr/www/php/Datei.php[/code]It is that simple, if the environment in which crond runs is right, and the script has the right she-bang. So on a 'normal' linux box you could do it this way. The problem is that the environment in this box is not normal, so you have to put it right before you can call php. And as you can't change the environment of crond, you'll have to do it inside the cronjob itself.

BTW, there might be an easier way. Inside the webserver the environment is OK for php. So if you can execute the script by simply browsing to http://<nas>/MyWeb/php/cronj.php, you can let that do by crond:
Code:
05 08 * * * wget http://localhost/MyWeb/php/cronj.php -O - >/dev/null
(The part -O - >/dev/null is to dispose the page itself. The goal is to run the script, not to get the page.)


Nach oben
 Profil  
 
 
 Betreff des Beitrags: Re: Cronjob .php laden
BeitragVerfasst: Mittwoch 11. Januar 2017, 16:19 
Offline
Mitglied

Registriert: Donnerstag 20. Dezember 2012, 19:24
Beiträge: 41
Wohnort: Kiel
Hallo,

dein vorschlag

Zitat:
BTW, there might be an easier way. Inside the webserver the environment is OK for php. So if you can execute the script by simply browsing to http://<nas>/MyWeb/php/cronj.php, you can let that do by crond:
Zitat:
05 08 * * * wget http: //localhost/MyWeb/php/cronj.php -O -> /dev/null


funktioniert wunderbar.

dies ist der Code wo mit ich das getestet habe:
Code:
*/1 * * * * wget -q -O /dev/null http://localhost/MyWeb/php/cronj.php


es wurde jede Minute die php Datei aufgerufen und das darin enthaltene Script ausgeführt.
die Zeit wurde natürlich auf "05 08 * * * wget...." angepasst.

Super
vielen lieben dank für deine Hilfe.

liebe grüße


Nach oben
 Profil  
 
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder: Exabot [Bot], Google [Bot]


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de


Impressum


Hubwagen  - Hubtisch  - Hochhubwagen  - günstige Hubwagen  - Hubwagen  - Hubtisch  - Scherenhubtische  - günstige Kehrmaschinen