PHP: Readfile работает на локальном хосте, но не на сервере - PullRequest
0 голосов
/ 16 февраля 2011

Я пытался часами решать свои проблемы и искал в Google и на нескольких досках, но я не нашел решения.

Моя проблема: я создал PHP-скрипт, который генерирует загрузку.Код ниже:

$file = "file.pdf";
$download_folder = "../contents/"; //RELATIV
$type= mime_content_type($download_folder.$file);
    header("Content-Type: $type");
    header("Content-Disposition: attachment; filename=\"$file\"");

    readfile($download_folder.$file);

Если я попробую его на моем локальном сервере (xampp), он сработает и начнется загрузка файла.Если я загружаю скрипт на свой хост-сервер (не собственный, он ушел), я получаю только пустую страницу.

Есть идеи?Спасибо!

Ответы [ 4 ]

0 голосов
/ 16 февраля 2011

Нашли ошибку. На веб-сервере не было функции mime_content_type. Спасибо за вашу помощь

0 голосов
/ 16 февраля 2011

Убедитесь, что у вас включен отчет об ошибках и все отображается во время разработки:

ini_set('display_errors', 1);
error_reporting(E_ALL);

Это должно сказать вам, в чем проблема.

Я предполагаю, что у него проблема с путем. Попробуйте использовать абсолютный путь, такой как /var/www/vhosts/yoursite.com/httpdocs/contents/file.pdf.

Если это не удастся, то, вероятно, проблема с разрешениями.

0 голосов
/ 16 февраля 2011

попробуйте добавить

if (!file_exists($download_folder . $file)) {
   die("can't find the file")
}
if (!is_readable($download_folder . $file)) {
   die("can't read the file")
}

перед выполнением вызовов header().Скорее всего, вы загрузили файлы в другое место, отличное от ожидаемого сценарием или недоступное для чтения веб-сервером.

0 голосов
/ 16 февраля 2011

Проверьте разрешение. Если у вас есть разрешение на чтение файла. Вы можете использовать команду chmod, чтобы установить разрешение.

...