getimagesize() проблем с взимането на дължината и широчината

nom3r1

Registered
Имам проблеми при взимането на WIDTH и HEIGHT на снимката с функцията getimagesize();

PHP:
Warning: getimagesize(/tmp/phprnf4bs) [function.getimagesize]: failed to open stream: No such file or directory in /home/nom3r1/public_html/upload.php on line 74

Имам инсталирана GD библиотека.

PHP:
##############################
$tmp_name = $_FILES['pic']['tmp_name'][''.$i.''];
##############################
list($width, $height) = getimagesize($tmp_name);
 

relax4o

Registered
Така като гледам, tmp името на файла не съдържа разширението на самата картинка и затова не може да я открие.
 

nom3r1

Registered
То - $_FILES['pic']['tmp_name'][''.$i.''];

са т.н. временни файлове в папка /tmp

Снимката се качва без проблеми, след което обаче не мога да и взема размерите за да направя thumb-ве.

Тоест.. Преди взимането на дължина/широчина си качвам снимката с: move_uploaded_file(); без проблеми и снимката си е в папката, обаче кода , продължава на долу с цел направа на thumb-ве.

Отначало взимам дължина/широчина

PHP:
list($width, $height) = getimagesize($_FILES['pic']['tmp_name'][''.$i.'']);
if(($width =< 150) AND ($height =< 150)) {
	move_uploaded_file($_FILES['pic']['tmp_name'][''.$i.''], $uploaded_thumb_dir.$new_file_name);
}

Тук, проверявам дали дължината и широчината не са равни или по-малки, АКО те са по-малки или равни от 150 тогава си качвам снимката, без промяна.

Но все пак.. проблема си остава.
 

relax4o

Registered
Ами задай абсолютния път, защото изглежда търси в папка /tmp, която се намира в директорията, в която е и файла upload.php . Ако /tmp ти е някъде другаде, то задай абсолютната стойност до /tmp и подавай стойността от $_FILES.
 

relax4o

Registered
Ами защо не ползваш copy() да правиш копие на снимката, с име което завършва _copy и с него си играй по размерите, след което запазваш оразмерената снимка под thumb.. нещо си име и правиш unlink на копираната снимка.

Малко замотано го обясних.
 

nom3r1

Registered
Не, не. Проблема беше следния:

Понеже използвам както казах по-горе move_uploaded_file(); - то снимката се качва , нали?

След, качването на снимката тя изтрива т.н. ВРЕМЕНЕН файл, после като се опитам да смаля снимката за thumb - естествено , че няма да стане, 'щото нали той се изтрива/премества. :))

Окей, преместих move_uploaded_file(); най - от долу и си реших проблема, обаче дойде другия проблем.

Ако кача снимка с размери по - малки от 150x150, то тогава отново ще се изпълни тази функция тъй като имам :

if(($width < WIDTH) AND ($height < HEIGHT)) {
move_uploaded_file($_FILES['pic']['tmp_name'][''.$i.''], $uploaded_thumb_dir.$new_file_name);
}

Тази проверка, което ме навежда на друга мисъл.

Ще трябва да взимам пътя до вече качената снимка, след което да създам thumb-а

EDIT: Готово.


LAST EDIT: С коя функция мога да взема ЦЕЛИЯ път до директорията? В моя случай: /home/nom3r1/public_html/

Тъй като в момента трябва да го пиша ръчно, но нямам намерения да редактирам файла, ако се смени тази директория например..

ОПА.. като съм изтрил мнението , ти си бил коментирал:
relax4o каза:
Ами защо не ползваш copy() да правиш копие на снимката, с име което завършва _copy и с него си играй по размерите, след което запазваш оразмерената снимка под thumb.. нещо си име и правиш unlink на копираната снимка.

Малко замотано го обясних.

Мисля, че няма нужда да и правя copy(); на снимката - в момента си бачка без проблеми проведох тест с качване на 10 снимки едновременно и ги смали без проблеми - сравнително бързо.

Трябва да оправя само това със взимането на директорията.

ОПА.. явно, ще трябва да включа в действие и copy(); - защо? Защото не мога да използва move_uploaded_file(); , защото иначе ще преместя файла - оригиналния, ако снимката е по - малка или равна. ХА! Мерси за идеята!
 

Горе