PHP FileSize () funktioniert in allen bis auf eine Datei, gibt einen fehlgeschlagenen Fehler an

StackOverflow https://stackoverflow.com/questions/2203679

  •  18-09-2019
  •  | 
  •  

Frage

Ich schreibe eine PHP -Seite, auf der ein Podcast -Feed generiert wird, indem ich eine vorhandene HTML -Seite abkratzen. Alles funktioniert großartig, aber eine meiner MP3 -Dateien gibt einen Fehler "FileSize (): STAT fehlgeschlagen". So gut ich das auch beurteilen kann, die Datei ist nicht beschädigt und spielt vollkommen in Ordnung. Ich habe die Datei auch wieder auf den Server geladen. Es fällt in den mittleren Bereich aller Dateigrößen, daher denke ich nicht, dass die Datei zu groß ist. Da jede andere Datei eine Dateigröße zurückgibt, gehe ich davon aus, dass das Problem mit der MP3 -Datei liegt, nicht mit meiner Serverkonfiguration. Gibt es noch etwas, das ich überprüfen sollte?

Hier ist der relevante Teil meines Codes:

$i = 1; //skipping header row on table
do {
    $tr = $table->find('tr', $i);

    $date = $tr->find('div', 0)->plaintext;
    $datetime = new DateTime($date);
    $speaker = $tr->find('div', 1)->plaintext;
    $title = $tr->find('div', 2)->plaintext;
    $url = $tr->find('div', 3)->find('a', 0)->href;
    $fullurl = "http://domain.org/resources/".$url;
    $filesize = filesize($url); //<---works on every file except one

    echo "<item><title>".$title."</title>\n";
    echo "<description>".$title." - ".$datetime->format('D, M jS, Y')." - ".$speaker."</description>\n";
    echo "<itunes:author>".$speaker."</itunes:author>\n";
    echo "<enclosure url=\"".$fullurl."\" length=\"".$filesize."\" type=\"audio/mpeg\"/>\n";
    echo "<guid isPermaLink=\"true\">".$fullurl."</guid>\n";
    echo "<pubDate>".$datetime->format('r')."</pubDate>\n";
    echo "<itunes:explicit>clean</itunes:explicit></item>\n\n";

    $i++;
}while ($table->find('tr', $i) != NULL);

Wie gefragt: (weisen die Leute auf Änderungen hin? Dies ist meine erste Frage hier ..)

Der Dateiname lautet "12-20-09_am_podcast.mp3", der der Namenskonvention jeder anderen Datei folgt, und alle Dateien haben Berechtigungen von 644. Der vollständige Fehlercode ist

<b>Warning</b>:  filesize() [<a href='function.filesize'>function.filesize</a>]: stat failed for audio/12-20-09_AM_Podcast.mp3 in <b>/homepages/1/d106955786/htdocs/victory/resources/podcast1.php</b> on line <b>45</b><br />
War es hilfreich?

Lösung

Aus irgendeinem Grund der Web-Server auf domain.org kehrt nicht zurück a Content-Length Headerfeld, das verursacht filesize() Versagen.

Wenn die Datei lokal gespeichert ist, filesize() die lokale Kopie der Datei stattdessen. Wenn nicht, können Sie dieses Problem nicht beheben, da es ein Problem ist domain.orgWeb-Server. Sie können das Problem umgehen, indem Sie die Datei lokal herunterladen und überprüfen filesize() Dann, aber dies wird Ihre Seite erheblich verlangsamen.

Wenn die Datei lokal gespeichert ist, überprüfen Sie Ihren Dateinamen oder Ihren Anker erneut. Sie haben vielleicht einen (oder beides) und Apache falsch geschrieben mod_speling repariert es für Sie.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top