Мои журналы ошибок выходят из-под контроля с двумя приведенными ниже ошибками
warning feof() expects parameter 1 to be resource
а также
warning fread() expects parameter 1 to be resource
Бит кода, ответственный за
<?php $file = '../upload/files/' . $filex; header("Content-Disposition: attachment; filename=" . urlencode($file)); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Description: File Transfer"); header("Content-Length: " . filesize($file)); flush(); // this doesn't really matter. $fp = fopen($file, "r"); while (!feof($fp)) { echo fread($fp, 65536); flush(); // this is essential for large downloads } fclose($fp); ?>
Я использовал этот код для загрузки заголовков, но теперь его волнующий вопрос – прежде чем кто-нибудь спросит, что я пробовал, я попробовал Google, но до сих пор не понимаю сообщение об ошибке.
fopen завершает работу и возвращает false. false – не ресурс, поэтому предупреждение.
Вам лучше проверить $ fp, прежде чем вводить его в качестве ресурсоподобного аргумента:
if(($fp = fopen($file, "r"))) { [...] }
Я недавно столкнулся с этой проблемой. Код отлично работал в моей локальной среде. Но когда он был загружен на сервер, я получил сообщение, обсуждаемое в этом потоке. В конце концов, проблема заключалась в том, что сервер учитывает регистр в именах файлов, а моя локальная среда – нет. После исправления имени файла все приступило к работе.