يعمل PHP png() على جميع الملفات باستثناء ملف واحد، ويعطي خطأً فشلًا في الإحصائيات

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

  •  18-09-2019
  •  | 
  •  

سؤال

أنا أكتب صفحة PHP تنشئ خلاصة بودكاست عن طريق مسح صفحة HTML موجودة.كل شيء يعمل بشكل رائع، ولكن أحد ملفات mp3 الخاصة بي يعطي "حجم الملف ():"فشل الإحصائيات" خطأ.بقدر ما أستطيع أن أقول، الملف ليس تالفًا، ويعمل بشكل جيد.لقد قمت أيضًا بإعادة تحميل الملف إلى الخادم.إنه يقع في النطاق المتوسط ​​لجميع أحجام الملفات، لذلك لا أعتقد أن الملف كبير جدًا.نظرًا لأن كل ملف آخر يُرجع حجمًا للملف، أفترض أن المشكلة تكمن في ملف 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