Функция php file_get_contents сохраняет неверный файл изображения в моем новом веб-сервере

Я разработал плагин WordPress, который использует file_get_contents() извлекать изображения из удаленного URL и сохранять его в локальной папке с помощью функции fwrite. Файл изображения сохраняется в локальной папке, чтобы на него можно было ссылаться позже.

Это прекрасно работает на одном веб-сервере 1. Но когда я установил плагин в WordPress, поддерживаемый на другом новом веб-сервере 2, файл создается в локальной папке, но кажется, что он поврежден. Я полагаю, что файл создан для изображений размером менее 100 КБ, но большие файлы, которые должным образом созданы на прежнем веб-сервере 1, повреждены при получении и создании на сервере 2.

Ниже приведен код, который я использую для извлечения изображений и сохранения в локальной папке:

//$imgurl = url of the image file and $upload_path 
// is path where image will be stored

$file = file_get_contents($imgurl) or die('File too large or inacessible');
$myFile = $upload_path . "\internal\folder\structure\\" . $file_name;
$fh = fopen($myFile, 'w') or die("Error");
$fwrite = fwrite($fh, $file);

if($fwrite === false)
{
    echo "error";
}
else
{
    echo "file has been created ".$file_name;
}

fclose($fh);

На сервере 1 это работает нормально, но на сервере 2 файл создается, но не может открыть его, потому что он поврежден. Я думаю, это, вероятно, должно быть связано с конфигурацией php сервера 2, но я не очень уверен, поэтому я с нетерпением жду вашей помощи.

1 ответ

Решение

Там может быть несколько причин

  1. Ошибка PHP, сгенерированная чем-то на server2

  2. некоторые выходные данные, такие как перевод строки или пробел перед вашей функцией

прочитайте http://php.net/manual/en/function.file-get-contents.php для подсказки

Другие вопросы по тегам