[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Заливка изображений на сервер
cvej
Здравствуйте!
Написал скрипт для заливки изображений на сервер, на локальной машине нормально работал, но когда перенёс скрипт на www сервер начались проблемы: вроде бы заливает но не копирует нужную папку. Кто сталкивался подскажите как исправить


вот скрипт:



$dir='/home/yoursite/www/';

if($_FILES["filename"]["tmp_name"]=='none') { die(''); }
// проверка размера
if($_FILES["filename"]["size"] > 2048000) // 2Mb
{
exit ("Размер файла превышает 2 мегабайта");
}
if (!is_uploaded_file($_FILES['filename']['tmp_name']))
{
die();
}
//////проверка типа файла
switch($_FILES["filename"]["type"])
{
case "image/jpg":
$type='.jpg';
break;
case "image/jpeg":
$type='.jpeg';
break;
case "image/gif":
$type='.gif';
break;
case "image/png":
$type='.png';
break;
default:
die("<P>This is not image");
}
//переименовывание
$this->name=md5(rand(0,100000).$_FILES["filename"]["name"]);
$new_n=$this->name.$type;

//дополнительная проверка типа файла
$im=getimagesize($_FILES["filename"]["tmp_name"]);
//echo $im[0].' '.$im[1].' '.$im[2];
if ($im[0]>0&&$im[1]>0&&$im[2]>0)
{


// функция изменияет размер фотки
function imageresize($outfile,$infile,$w,$max_h,$quality,$type)
{
switch($type)
{
case ".jpeg":
case ".jpg":
$im=imagecreatefromjpeg($infile);
break;
case ".gif":
$im=imagecreatefromgif($infile);
break;
case ".png":
$im=imagecreatefrompng($infile);
break;
default:
die("<P>ERROR");
}
$h=imagesy($im)*$w/imagesx($im)<=$max_h?imagesy($im)*$w/imagesx($im):$max_h;
$im1=imagecreatetruecolor($w,$h);
imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im));
switch($type)
{
case ".jpeg":
case ".jpg":
imagejpeg($im1,$outfile,$quality);
break;
case ".gif":
imagegif($im1,$outfile,$quality);
break;
case ".png":
imagepng($im1,$outfile,$quality);
break;
default:
die("<P>ERROR");
} // imagejpeg($im1,$outfile,$quality);
imagedestroy($im);
imagedestroy($im1);
}
if(copy($_FILES["filename"]["tmp_name"], $dir .$new_n))
{
imageresize($new_n,$_FILES["filename"]["tmp_name"],"1024","1024","75",$type);

$this->name=$this->name.'small'.$type;
imageresize($this->name,$new_n,200,600,75,$type);

unlink($_FILES['filename']['tmp_name']);
$_FILES["filename"]["tmp_name"]=0;
}
else {
exit('Ошибка загрузки файла');
}
}
else
die('error 6');








Спустя 18 минут, 29 секунд (6.12.2009 - 20:01) Romms написал(а):
Включите показ ошибок
ini_set('error_reporting', E_ALL);
ini_set ('display_errors', 1);

Да, и проверте chmod

Спустя 8 минут, 42 секунды (6.12.2009 - 20:10) Gabriel написал(а):
ага и copy заменить на move_uploaded_file

Спустя 14 минут, 40 секунд (6.12.2009 - 20:25) cvej написал(а):
Все сделал как вы сказали, выводит ошибки:
/home/u5555/mysite.ru/tmp/phpYOZbDa
Warning: chmod() [function.chmod]: Operation not permitted in /home/u5555/mysite.ru/www/slil.php on line 211

Warning: copy(/home/u5555/mysite.ru/www/image/ecb720546a40e0964f3f87fe2e1b17f7.jpeg) [function.copy]: failed to open stream: Permission denied in /home/u5555/mysite.ru/www/slil.php on line 212

подскажите как исправить, первый раз с этим столкнулся

Спустя 2 минуты, 35 секунд (6.12.2009 - 20:27) twin написал(а):
Перевести сообщение о ошибке для начала нужно. Потом еще раз прочитать советы. В части прав (chmod).

Спустя 4 минуты, 44 секунды (6.12.2009 - 20:32) Guest написал(а):
Я как бы первым делом перевёл сообщение об ошибке. прочитал о chmod,
в скрипт дописал
chmod("/home/u5555/mysite.ru/www/image/$new_n",0666);
но желаемого эффекта не получил, по этому и обратился сюда за помощью

Спустя 22 минуты, 43 секунды (6.12.2009 - 20:55) Romms написал(а):
может лучше через клиент выставить?...
и для всей папки...

Спустя 16 дней, 13 часов, 32 минуты, 39 секунд (23.12.2009 - 10:27) blarko написал(а):
попробуй 777 поставить, на некоторых хостингах тока с полными правами файло из сценария льется(но тут уже рекомендую сделать папку для файлов отдельную)

Спустя 1 час, 1 минута, 14 секунд (23.12.2009 - 11:29) VolCh написал(а):
Цитата (Guest @ 6.12.2009 - 21:32)
Я как бы первым делом перевёл сообщение об ошибке. прочитал о chmod,
в скрипт дописал
chmod("/home/u5555/mysite.ru/www/image/$new_n",0666);
но желаемого эффекта не получил, по этому и обратился сюда за помощью

Раз PHP (вернее апач) не смог записать в каталог, значит и режим доступа он сменить не сможет. Менять должен тот, кто создавал (на шаред хостингах - через ftp клиент). Как вариант можно эту папку создать через PHP, тогда в неё никто кроме апача писать не сможет smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.