Tôi đang viết một trang PHP tạo nguồn cấp dữ liệu podcast bằng cách cào một trang HTML hiện có. Mọi thứ đều hoạt động tốt, nhưng một trong những tệp mp3 của tôi có lỗi "filesize(): stat failed". Tốt nhất là tôi có thể nói, tệp không bị hỏng và nó phát hoàn toàn tốt. Tôi cũng đã tải lại tệp lên máy chủ. Nó nằm trong phạm vi trung bình của tất cả các kích thước tệp, vì vậy tôi không nghĩ rằng tệp quá lớn. Bởi vì mỗi tập tin khác trả về một kích thước tập tin, tôi giả định vấn đề là với tập tin mp3, không phải với cấu hình máy chủ của tôi. Có điều gì khác mà tôi nên kiểm tra không?PHP filesize() hoạt động trên tất cả trừ một tệp, cung cấp cho lỗi stat không thành công
Dưới đây là phần có liên quan của mã của tôi:
$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);
Theo yêu cầu: (? Làm người chỉ ra chỉnh sửa Đây là câu hỏi đầu tiên của tôi ở đây ..)
Các tên tập tin là "12-20- 09_AM_Podcast.mp3" mà theo quy ước đặt tên của tất cả các tập tin khác, và tất cả các file có quyền của 644. các mã lỗi đầy đủ là
<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 />
Tên tệp có chứa bất kỳ ký tự không phải ASCII hoặc ký tự đặc biệt nào() [] không? Plus, khi stat thất bại, không phải là thường có một mã lỗi? –
Thấy đây là lỗi gọi hàm đơn giản, bạn phải hiển thị tên tệp thực tế (có thể cả quyền trên tệp) –
Kiểm tra xem máy chủ web của bạn có đủ đặc quyền để truy cập hay không. – zneak