PHP: imagemagick создает пустое изображение с помощью convert - PullRequest
3 голосов
/ 12 декабря 2010

У меня есть скрипт, который должен взять изображение и преобразовать его в .jpg.Вот код, который делает это возможным:

$uploadDir = $_SERVER['DOCUMENT_ROOT'] . "/blogimages/";
$tempFile = ereg_replace("'", "_", basename($_FILES['newsImg']['name']));
$uploadFile = $uploadDir . $tempFile;
move_uploaded_file($_FILES['newsImg']['tmp_name'], $uploadFile);
$newPic = $uploadDir . $blogID . ".jpg";
if(file_exists($newPic)){
unlink($newPic);
}
$convertString = "$IM -strip $uploadFile $newPic";
echo "<!-- $convertString -->";
exec($convertString);

, как видно, я поместил последнюю строку в HTML-комментарий, чтобы я мог видеть, что выполняется.То, что происходит, - то, что преобразованное изображение создано, но это изображение 0 байтов.Таким образом, данные не записываются в файл.Просто чтобы убедиться, что конвертирование действительно работает как обычно, я должен скопировать и вставить строку конвертирования из html-комментария в командную строку, и это прекрасно работает.Кажется, только в PHP exec есть проблемы.Любые мысли о том, почему это может быть?

Ответы [ 2 ]

2 голосов
/ 13 декабря 2010

Я думаю, возможно, дескриптор файла загрузки еще не закрыт, когда вы пытаетесь выполнить команду?Таким образом Imagemagick увидит неполный файл.

Глядя на код, я не вижу, как это может произойти, особенно если файл перемещается, но это объясняет поведение.

1 голос
/ 12 декабря 2010

Начните с проверки ошибок на $_FILES['newsImg']['name'] и проследите, чтобы move_uploaded_file(...) был успешным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...