PHP filesize()는 하나의 파일을 제외한 모든 파일에서 작동하며 통계 실패 오류가 발생합니다.

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

  •  18-09-2019
  •  | 
  •  

문제

기존 HTML 페이지를 스크랩하여 팟캐스트 피드를 생성하는 PHP 페이지를 작성 중입니다.모든 것이 잘 작동하지만 내 mp3 파일 중 하나에서 "filesize():통계 실패' 오류.내가 아는 바로는 파일이 손상되지 않았으며 완벽하게 정상적으로 재생됩니다.또한 파일을 서버에 다시 업로드했습니다.전체 파일 크기 중 중간 범위에 속하기 때문에 파일이 너무 크지는 않다고 생각됩니다.다른 모든 파일은 파일 크기를 반환하기 때문에 서버 구성이 아닌 mp3 파일에 문제가 있다고 가정합니다.그 밖에 확인해야 할 사항이 있나요?

내 코드의 관련 부분은 다음과 같습니다.

$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);

요청대로:(사람들이 편집 내용을 지적하나요?이것이 나의 첫 번째 질문입니다..)

파일 이름은 다른 모든 파일의 명명 규칙을 따르는 "12-20-09_AM_Podcast.mp3"이며 모든 파일의 권한은 644입니다.전체 오류 코드는 다음과 같습니다.

<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 />
도움이 되었습니까?

해결책

어떤 이유로 웹 서버가 domain.org 반환하지 않습니다 Content-Length 헤더 필드로 인해 filesize() 실패.

파일이 로컬에 저장되어 있는 경우 filesize() 대신 파일의 로컬 복사본을 사용하세요.그렇지 않은 경우 이 문제는 다음의 문제이므로 해결할 수 없습니다. domain.org의 웹 서버입니다.파일을 로컬로 다운로드하고 확인하여 문제를 해결할 수 있습니다. filesize() 그러면 페이지 속도가 크게 느려질 것입니다.

파일이 로컬에 저장된 경우 파일 이름이나 앵커를 다시 확인하세요.하나(또는 둘 다)와 Apache의 철자가 틀렸을 수 있습니다. mod_speling 당신을 위해 그것을 고치고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top