Проблема с GD

Anton63

Новичок
Проблема с GD

Привет!
Выложил сайт на Hut.ru
Пытаюсь сделать так, что бы при добавлении вместе с ней добавлялось сжатое изображение формата JPEG.
Вот код:

PHP:
if(is_uploaded_file($_FILES['img']['tmp_name']))//перемещение картинки на сервер
{
  $f_name = $_FILES['img']['name'];
  $path_img = '../img_ans/';
  $path_tmp = '../tmp/img_ans/';
  $final_width = 400;
  if(copy($_FILES['img']['tmp_name'], "../tmp/img_ans/".$f_name))
    {
    //добавление данных в БД и сжатие изображения
    $im = imagecreatefromjpeg($path_tmp.$f_name);
    $ox = imagesx($im);  //ширина и высота загруженого изображения
    $oy = imagesy($im);
    $nx = $final_width; //ширина и высота сжатого изображения
    $ny = floor($oy * ($final_width / $ox));
    $nm = imagecreatetruecolor($nx, $ny); //создание формы для сжатого изображения
    imagecopyresized($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy);//вставка в форму
    //Вставляем отредактированое изображение в зависимости от формата    
    imagejpeg($nm, $path_img . $name);
    unlink($path_tmp . $f_name);
  }
}

На этапе, где функция imagecreatefromjpeg() всё сткпарится, скрипт дальше не выполняется, страница не загружается полностью...

phpinfo() пишет следующее:

GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

Подскажите пожалуйсто в чём проблема... Уже с месяц с этим мучаюсь... Никто подсказать ничего не может... Чё мне делать???
 

Anton63

Новичок
SiMM
Прочитал, что то понял, что то нет...

error_reporting(E_ALL); не ругается на скрипт. В логах сервера ничего нет...
 

Agr

Новичок
1 проверить наличие $path_tmp.$f_name
2 если нет - проверить права на запись $path_tmp

вообще, перемещать файл в $path_tmp есть суета излишняя. работай от $_FILES['img']['tmp_name']
 

Anton63

Новичок
Agr
Заменил на:
$im = imagecreatefromjpeg($_FILES['img']['tmp_name']);

echo $_FILES['img']['tmp_name']; пишет "/var/tmp/phpWSVeeW", т.е. он его закачал на сервер...

Права на папку стоят 666

На локалхосте всё работает как часы... А на хосте ничего не работает...))
Я вот думаю, что проблема скорее всего в библиотеке gd... Подскажите, может её как нибуть настроить или подключить надо... может что нибудь надо прописать в скрипте или .htaccess???
 

damngood

Мозг был, но ушел...
Anton63
Что возвращает функция imagecreatefromjpeg в твоем случае проверить можешь?
 

Anton63

Новичок
damngood
эээ... нет... как проверить не подскажешь???

$im = imagecreatefromjpeg($_FILES['img']['tmp_name']);
$ox = imagesx($im);

Просто если бы он что то передавал в $im, то можно было бы проверить... но он даже не переходит к следующей функции(т.е. imagesx()).

Я ставил echo "1"; до imagecreatefromjpeg() и echo "2"; после... так вот он 1 пишет, а 2 нет...
 

damngood

Мозг был, но ушел...
Если на то пошло, то сделай

var_dump(imagecreatefromjpeg($_FILES['img']['tmp_name']));

ссылку на дебаг мануал тебе давали. Там это описано.

Вообще же при отсутствии файлы, там должен был вылезти warning
 

Agr

Новичок
1 попробуй с другим jpeg. Они бывают битые, и тогда бы обработка там и споткнулась, вот только отсутствие ошибок мне не нравится

2
выполни чтото другое простое, прочитай в <IMG> напр это:
Header("Content-type: image/jpeg");
$im=ImageCreate(100,100);
$grey=ImageColorAllocate ($im, 150,150,150);
ImageFill($im, 0,0,$grey);
ImageJpeg($im);
ImageDestroy($im);
 

Anton63

Новичок
При var_dump(imagecreatefromjpeg($_FILES['img']['tmp_name'])); ничего не происходит... ничего не выводится и скрипт дальше не работает...

Проверил, что изображения на сервер закачиваются, но битые... либо вообще не отображаются, либо с сильными искажениями... на хосте написано, что надо в .htaccess добавить строку "CharsetDisable On", я её добавил уже давно... но изображения всё равно битые...
 

A1x

Новичок
imagecreatefromjpeg возвращает false в случае ошибки (кстати в мануале не написано что она кидает warning)
еще можно проверить результат ф-циями is_resource, get_resource_type

можно проверить вообще является ли изображением загруженный файл и определить тип изображения ф-цией getimagesize еще до вызова imagecreatefromjpeg

ну нафиг такие хостинги с CharsetDisable..
 

tardis

lazy
ini_set("display_errors","on"); в начале скрипта

-~{}~ 11.11.09 14:10:

вообще выполни phpinfo(); и посмотри там в каком значении установлена директива display_errors

-~{}~ 11.11.09 14:12:

только сначала выполни до ini_set, чтоб посмотреть, как было, а потом переставь после ini_set, чтоб посмотреть, как стало
 

damngood

Мозг был, но ушел...
A1x
В мануале и не будет написано, это просто факт.

-~{}~ 11.11.09 14:53:

Как вариант в начале скрипта

ini_set('gd.jpeg_ignore_warning', 1); Если версия выше 5.1.3 и фыйл битый попался
 

Anton63

Новичок
Я думаю может просто хост сменить??? На платном таких проблем то быть наверное не должно... На денвере то у меня всё отлично работает...
 

A1x

Новичок
попробуйте еще
<IfModule mod_charset.c>
CharsetRecodeMultipartForms off
</IfModule>

но лучше хостинг сменить.
 

Anton63

Новичок
неа... ничего не помогает... буду хост менять тогда... и на hut.ru больше ни ногой... тех. поддержка там, кстати, никакая... мне даже не отвечают на письма...
 
Сверху