AdminTool Cron führt skript nicht aus

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

Harry_89

Benutzer
Registriert
07. März 2010
Beiträge
254
Reaktionspunkte
0
Punkte
0
Hallo,

ich habe ein kleines Problem mit den Crons.

Habe mit dem Tool einen Cron erstellt der zu jeder vollen Stunde das Script ausführen soll.

Unter Command steht

/volume1/web/import/imports.php

In diesem php Skript wierd eine txt Datei zerlegt und anschließend per mysql in die Datenbank geschrieben und anschließend das Textfile gelöscht.

Habe ich hier etwas falsch angegeben oder worin liegt mein Fehler?

Danke
 
Es ist immer besser, einen Screenshot anzuhängen, denn so ist es eher ein Glücksspiel, den Fehler zu finden. Ich vermute, dass du vergessen hast, den php mit in die Zeile zu schreiben und dich darauf verlässt, dass der irgendwie schon durch die Dateiendung gefunden wird.

Also entweder: /usr/bin/php /volume1/web/import/imports.php

oder per Shebang in der erste Zeile des Skriptes probieren: #!/usr/bin/php

Itari
 
oh danke.
Dein Erster Tipp war Gold Wert.

Jetzt sehe ich in dem Log, dass er das File ausführt.
Aber leider habe ich auch php warnings.

PHP Warning: fopen(): open_basedir restriction in effect. File(imports.txt) is not within the allowed path(s): (/etc.defaults:/usr/bin/php:/usr/syno/synoman:/etc:/var/run:/tmp:/var/spool/php:/volume1/@tmp/php:/var/services/web:/var/services/photo:/var/services/blog:/var/services/homes) in /volume1/web/import/imports.php on line 12
PHP Warning: fopen(imports.txt): failed to open stream: Operation not permitted in /volume1/web/import/imports.php on line 12

Und hier nochmals der Abschnitt vom php Code.

$file = "imports.txt";
$fp = fopen($file, "r");
$data = fread($fp, filesize($file));
fclose($fp);

Dass heißt also ich muss meine File wo anderst ablegen?
 
Zwar gehört das Thema 'open_basedir' nicht mehr in dieses Forum und du findest im Unterforum 'Webserver' dazu eine Menge Beiträge, aber trotzdem hier einen Tipp dazu: Im DSM gibt es die Möglichkeit, die Einstellung von 'open_basedir' zu modifizieren. Entweder du löschst alles ganz raus (das geht dann immer) oder due ergänzt den Pfad noch um dein Verzeichnis ... dabei ist es wichtig, zu verstehen, dass PHP nicht die wirklichen Pfade hier versteht (mit Link usw.) sondern schlicht eine textuelle Mustererkennung durchführt ... mehr dazu findest im PHP-Handbuch ganz versteckt unter der Beschreibung dieser Einstellungsvariablen.

Itari
 
Aber leider bekomme ich jetzt immer noch einen php Warning.

Kann es sein, dass du Sonderzeichen oder Umlaute im Dateinamen hast??? Und ja, fast 30% einen PHP-Programms, welches sich mit Dateien beschäftigt, ist Zeichensatzkonvertiererei ... sehr lästig, aber nur 'ohne' zu vermeiden.

Itari
 
Nein es sind keine Sonderzeichen im Dateinamen vorhanden.

Importiert soll nur eine Textdatei werden.
Diese heiß immer "imports.txt"

Nachtrag:
In der ersten Zeile der Txt Datei sind Sonderzeichen gestanden.
Diese habe ich jetzt Manuelle gelöscht.

Danach hatte ich folgende Meldung im Log.

crond: user root: parse error at 25
 
dann ist dein cronjob irgendwie fehlerhaft aufgesetzt. Hast du beachtet, dass bei Cronjobs via cron der Firmware Tabs als Trennzeichen verwendet werden müssen?
 
Ich hätte genauer lesen müssen ...

Die Fehlermeldung geht nicht auf eine 'lokale' Datei, sondern auf eine Web-URL (http://localhost/import/imports.txt) ... besser wäre, wenn die Datei per Pfad (/volume1/web/import/imports.txt) für den filesize() angesprochen werden würde ...

Itari
 
Verwende einfach file() oder file_get_contents(), dann geht es auch ohne filesize() und damit auch via URL
 
@Itari:

Wenn ich die Datei mit dem Pfad angebe erhalten ich folgendes im Log.

PHP Warning: fopen(volume1/web/import/imports.txt): failed to open stream: No such file or directory in /volume1/web/import/imports.php on line 12

Ich vermute hier wird der Pfad nicht richtig übergeben, da er ja bei Line 11 keinen Fehler bringt.

@jahlives

Auch hier erhalte ich folgende Fehlermeldung.
Egal mit welcher von deinen Vorschlägen.

PHP Warning: fread() expects parameter 2 to be long, string given in /volume1/web/import/imports.php on line 13

Hier nochmals der php Code so wie er Anfangs war.

Line11$file = "volume1/web/import/imports.txt";
Line12:$fp = fopen($file, "r");
Line13:$data = fread($fp, filesize($file));
Line14:fclose($fp);
 
Dann hast du meine Vorschläge nicht korrekt umgesetzt... Mal ins Manual geguckt was der Unterschied zwischen den beiden Fkt ist und was sie machen? bei meinen Voschlägen hat fread nichts mehr zu tun
Und dein Pfad im Skript ist so nicht korrekt. Ichgarantier dir, dass das File bei dir ned dort liegt
 
Irgendwie fehlt da noch der Schrägstrich am Anfang des Pfades ...

Itari
 
@ Jahlives:

Jetz hab ichs hinbekommen mit dem Import. :)
Alle Daten sind korrekt eingetragen.

Da du aber vorher gesagt hast, dass meine File garantiert nicht dort lieg.
Wo liegt es den dann?

@Itari:

Auch der fehlende Schrägstrich hat leider nicht zum Ergebnis geführt, bekomme immer noch diese Fehlermeldung.
PHP Warning: fopen(volume1/web/import/imports.txt): failed to open stream: No such file or directory in /volume1/web/import/imports.php on line 12
 
Auch der fehlende Schrägstrich hat leider nicht zum Ergebnis geführt, bekomme immer noch diese Fehlermeldung.
PHP Warning: fopen(volume1/web/import/imports.txt): failed to open stream: No such file or directory in /volume1/web/import/imports.php on line 12
der Schrägstrich fehlt in der Fehlermeldung immer noch. Das meinte ich mit dein File liegt dort garantiert ned, weil dieser Pfad so ned existiert auf deiner DS.
Zum Thema file und file_get_contents: Wenn du immer noch einen Fehler mit fread bekommen hast, dann hast du meinen Vorschlag ned verstanden oder nicht umgesetzt. Bei file und file_get_contents brauchst du kein fread mehr :-)
 
Deswegen habe ich ja geschrieben.
Es hat funktioniert. ;)

Daten wurden korrekt vom Textfile gelesen und in die DB import.

Mich hat nur interessehalber interessiert wo ich nach dem File suchen soll.

Ich würde gerne Variante 2 auch zum Laufen bringen. :)
 
siehst du den Unterschied? ;-)
PHP Warning: fopen(volume1/web/import/imports.txt): failed to open stream: No such file or directory in /volume1/web/import/imports.php on line 12
Und welche Variante 2 meinst du konkret?
 
Ja klar des Schrägstrich fehlt.

Aber auch mit dem Schrägstrich bekomme ich den Fehler.

Deine Variante funktioniert ja mit einer URL.

Die Zweite Variante funktioniert mit lokalen Angaben.
Hoffe es ist verständlich was ich damit meine.

Auch wenn ich den Schrägstrich mache bekomme ich die Fehlermeldung..
 
Welche Fehlermeldung meinst du jetzt genau? Die wegen dem falschen Pfad kanns ja ned sein, wenn du den / gemacht hast
 
okayy....

Jetz wirds peinlich ^^

Jetz gehts aufeinmal ohne Probleme...
komisch.

Die Daten sind korrekt in der DB enthalten und auch keine Fehlermeldungen, dass er die Datei nicht findet.



Am Ende habe ich eine unlink funktion stehen die mir das txt file löschen soll.

Nachdem der Cron fertig ist, ist die Datei auch weg, aber es steht trotzdem geschätze 100 mal folgende Meldung im Log.

PHP Warning: unlink(/volume1/web/import/importd.txt): No such file or directory in /volume1/web/import/importd.php on line 61
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat