PHP filesize()适用于除一个文件之外的所有文件,给出stat失败错误

Nic*_*ras 6 php mp3 filesize

我正在编写一个PHP页面,通过抓取现有的HTML页面来生成播客源.一切都很好,但我的一个mp3文件给出了"filesize():stat failed"错误.尽我所知,该文件没有损坏,它播放完全正常.我还将文件重新上传到服务器.它属于所有文件大小的中间范围,所以我不认为文件太大.因为每个其他文件都返回一个文件大小,我假设问题是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);
Run Code Online (Sandbox Code Playgroud)

根据要求:(人们指出编辑吗?这是我的第一个问题..)

文件名是"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 />
Run Code Online (Sandbox Code Playgroud)

And*_*ore 4

由于某种原因,网络服务器domain.org没有返回Content-Length标头字段,这导致filesize()失败。

如果文件存储在本地,则filesize()使用该文件的本地副本。domain.org如果没有,您将无法解决此问题,因为这是的网络服务器上的问题。您可以通过在本地下载文件并检查来解决该问题filesize()然后解决该问题,但这会大大减慢您的页面速度。

如果文件存储在本地,请再次检查您的文件名或锚点。您可能拼写错误一个(或两个),Apachemod_speling正在为您修复它。