PHP unlink() funktioniert nicht bei automatischem Script

rocket81

Lt. Commander
Registriert
Dez. 2007
Beiträge
1.054
Hallo,
ich habe ein Problem mit einem Automatischen php Script:

Im Script steht zum Test nur folgende Zeile:

Code:
<?php function del() { unlink("test.zip"); }?>

Wenn ich diese Funktion über eine 2. php Datei im Browser aufrufe:

Code:
<?php 
include('datei1.php');
del(); ?>

wird die Testdatei gelöscht und alles funktioniert wie es sollte, wenn ich die Funktion del() aber automatisch in einem Script aufrufen lasse wird die Datei nicht gelöscht.

Wieso wird die Datei nur beim manuellen Aufruf gelöscht und sonst nicht?
Ich hoffe ich hab das gut genug erklärt, ansonsten fragt nochmal nach.

Vielen Dank für eure Hilfe.

EDIT: Ich habe hier nur schnell einen Beispielcode geschrieben aber das Problem bezieht sich definitiv auf die unlink() Funktion. Pfade, Rechte usw stimmen, beim manuellen Aufruf klappt ja alles...
 
Zuletzt bearbeitet:
Was definierst du hier als "automatisches Skript" und was als "manuell ausführen"? Ich kann dir da irgendwie gar nicht folgen...
 
Ich tippe auf den Pfad, setzte mal einen absoluten Link ( /home/user/datei1.php )
Wenn du die Datei includest, befindet sich diese Hauptseite in einem anderen Verzeichnis?

Ansonsten müsstest du im Apache Errorlog etwas finden können.
Und immer dran denken, dass der ausführende User der Webserver ist. :)
 
Zuletzt bearbeitet:
Mit automatisch meine ich, dass bei einem normalen Seitenaufruf geprüft wurde wann die del Funktion zum letzten mal aufgerufen wurde, wenn das zu lange her ist wird sie ausgeführt, beim manuellen Aufruf wird die Funktion auf jeden Fall sofort ausgeführt.

Ich habe auch schon absolute Pfade getestet, hier ists genau das selbe, manuell klappts, automatisch nicht.
Alles ist im selben Verzeichnis und die Userrechte stimmen auch.
 
Dann liegts vielleicht daran... Zeit und Datums funktionen sind auch recht fehleranfällig.
Mach dir mal Ausgaben dazu.

Im Sinne von: Noch nicht lange genug!; Lang genug -> löschen!
Und vtl. ausgelesene Werte timestamps oder sonst was.
Oder was du halt sonst da hast zum Debuggen (IDE) dann würde ich nämlich drauf tippen, dass die Funktion del() nicht aufgerufen wird.
 
Die Funktion wird definitiv automatisch aufgerufen, daran liegts auch nicht :/
 
Isses ein echter Cronjob oder ein Browser-basierter Pseudo-Cron? Das ist auch ein großer Unterschied...

@Suxxess: Der ausführende User ist nicht zwingend der Webserver (www-data). Tatsächlich wäre es regelrecht strunzendämlich, den Server so angreifbar zu konfigurieren.
 
lass doch mal im script 1 was echoen. dann siehst du wenigstens, obs richtig included wird..
 
In nem Cron was echoen bringt nicht viel. Besser wäre ein Eintrag in eine Log-Datei.
 
Log-Eintrag wurde erstellt, Script wird auf jeden Fall ausgeführt, aber die Datei wird nicht gelöscht.

EDIT: War natürlich doch ein Fehler im Pfad, danke für eure Hilfe ;)
 
Zuletzt bearbeitet:
Zurück
Oben