file_exists () funktioniert nicht in php5 innerhalb der while-Schleife

8

file_exists funktioniert nicht. Ich habe mir ein paar Beispiele angesehen und immer noch nicht. Programm erkennt die Datei nicht. Der Pfad meiner Datei ist /var/www/osbs/PHPAPI/recording.mp3 und der Website-Root befindet sich in osbs. Der Speicherort dieser Datei befindet sich in PHPAPI, weshalb ich den vollständigen Pfad nicht in file_put_contents einstelle. Das Programm ist in der Lage, das Original aufzunehmen.mp3, aber keine angehängten Versionen davon.

%Vor%     
fixnode 08.06.2017, 00:30
quelle

8 Antworten

2

Ihr Problem ist mit file_put_contents . Sie müssen einen vollständigen Pfad angeben, und Sie geben nur einen Dateinamen an. Probieren Sie echo ing $name aus, bevor Sie es verwenden. Sie werden feststellen, dass es sich nicht um einen Pfad, sondern nur um einen Dateinamen handelt.

Ich würde Ihnen empfehlen, am Anfang der Datei eine Konstante mit dem Pfad zu setzen, anstatt sich manchmal auf relative Pfade zu verlassen und manchmal auf absolute Pfade zu vertrauen.

%Vor%

Was ich geändert habe:

  1. Definiert ein const SAVE_PATH = "/var/www/osbs/";
  2. Verwenden Sie die neue Konstante überall. Nicht mehr relativ manchmal und absolut manchmal, es ist alles absolut.
  3. Benutzte die Konstante in file_put_contents ( DAS IST DER AKTUELLE FIX, SIE BENÖTIGEN HIER EINEN VOLLEN PFAD )
  4. Es wurde eine zusätzliche Überprüfung hinzugefügt, um sicherzustellen, dass RecordingUrl gesetzt ist, andernfalls erhalten Sie eine PHP-Warnung, wenn sie nicht gesetzt ist.
Growiel 12.06.2017, 03:44
quelle
2

Das Problem scheint in der ersten Zeile Ihres Skripts zu liegen:

%Vor%

Dies wird recording.mp3 zu $actual_filename zuweisen. Sie suchen dann nach recording.mp3.mp3 , indem Sie die Erweiterung mit dem Dateinamen verketten. Ich denke, Sie möchten PATHINFO_BASENAME verwenden, die den Dateinamen sans Erweiterung zurückgibt.

    
sjdaws 08.06.2017 01:04
quelle
2

Bist du dir sicher über den Pfad? /PHPAPI sucht nach der Datei in /PHPAPI , nicht nach der erwarteten /var/www/osbs/PHPAPI/ . Sie sollten stattdessen nach PHPAPI/$filename suchen.

    
Talus 08.06.2017 00:37
quelle
2

Sie müssen alles logisch in die Funktion find_new_name() einfügen. Das würde deinen Code klarer machen.

%Vor%     
Adam 12.06.2017 12:50
quelle
1

Sie haben den Pfad mit file_put_contents () vergessen. Es sollte sein:

%Vor%

Oder:

%Vor%     
Rei 12.06.2017 07:47
quelle
1

Sie sind verwirrt zwischen URL einer Datei und ihrem PATH

Ihr httdoc (oder public_html) root ist / var / www / osbs / PHPAPI

Aber Ihr Dateisystem root ist /

Probieren Sie

aus %Vor%

Es gibt viele schlechte Praktiken in Ihrem Code

    
Manish Dhruw 12.06.2017 07:46
quelle
0

'file_exists' und einige andere Dateiaufrufe wie fstat werden von php zwischengespeichert. Dies ist im Handbuch für file_exists dokumentiert. Ihr erster Anruf, wenn die Datei nicht existiert, wird gespeichert und in nachfolgenden Aufrufen zurückgegeben. Verwenden Sie 'clearstatcache ()' zwischen den Aufrufen, um den Cache zu löschen.

    
Jeremy Giberson 12.06.2017 15:23
quelle
0

Ein "kleines" Refactoring:

  1. Absoluter Pfad überall
  2. Transparente Funktion, selbsterklärender Name, einfachere Verwendung von Argument
  3. Schutz gegen böswillige Eingaben ($ _POST schneidet wirklich nicht ab)
  4. Warum file_put_contents () wenn Sie tatsächlich kopieren möchten ()

    %Vor%
zzanzare 18.06.2017 06:20
quelle

Tags und Links