PDA

View Full Version : سوال: مشکل آپلود فایل روی سرور



SohrabYousefi
دوشنبه 06 مرداد 1393, 18:15 عصر
سلام به همگی .
دوستان من به یه مشکل عجیب برخوردم .
یه اسکریپت برای آپلود نوشتم که بصورت local و بر روی هاست به خوبی کار می کنه .
اما جدیدا همین اسکریپت رو روی یه هاست جدید امتحان کردم که متوجه شدم تابع move_uploaded_file روی این هاست عمل نمی کنه .
هر چه که به ذهنم می رسید رو بررسی کردم ( مثلا: سطح دسترسی پوشه tmp ، upload_max_filesize ، post_max_size و max_execution_time ).
این تیکه کد رو هم داخل htaccess گذاشتم واسه اطمینان :
<IfModule mod_php5.c>
php_value post_max_size 200M
php_value upload_max_filesize 200M
php_value memory_limit 300M
php_value max_execution_time 259200
php_value max_input_time 259200
php_value session.gc_maxlifetime 1200
</IfModule>
ولی همچنان فایل آپلود نمیشه ! از خود اسکریپت 100٪ مطمئن هستم که صحیح نوشته شده .
کسی به این مشکل برخورده تا بحال ؟
ممنون میشم اگه راهنمایی کنید .

vahidqara
دوشنبه 06 مرداد 1393, 18:37 عصر
دوست خوب اسکریبت و بزارید تا شاید دوستی تونست کمک کنه .. :لبخندساده:

SohrabYousefi
دوشنبه 06 مرداد 1393, 19:06 عصر
یه تابع هست که نام ، سایز ، شماره اررور و نام tmp عکس رو می گیره و عملیات رو انجام میده .
تمام آرگومان ها رو هم به درستی دریافت می کنه ( امتحان کردم ) .
تنها مشکلش با تابع move_uploaded_file هست .

function uploadImage($imgName,$imgSize,$error,$tmp)
{
$ext = strtolower(end(explode('.',$imgName)));
$array_suffixes = array("bmp","jpg","jpeg","png","apng","ashx");
if(in_array($ext,$array_suffixes))
{
if(!empty($imgName) && $error == 0)
{
if(($imgSize/1024) <= 10240)
{
$photo = rand().rand()."_".rand().rand().".png";
$file_path = "../images/icons/".$photo;
if(move_uploaded_file($tmp,$file_path))
{
echo "File has been uploaded .";
}
else
{
echo "File did not upload .";
}
}
else
{
return FALSE;
}
}
else
{
return FALSE;
}
}
else
{
return FALSE;
}
return $imgName;
}

vahidqara
دوشنبه 06 مرداد 1393, 20:02 عصر
این متغیر رو چک کن ببین مقدارش چیه ؟ $tmp

SohrabYousefi
سه شنبه 07 مرداد 1393, 13:10 عصر
این متغیر رو چک کن ببین مقدارش چیه ؟ $tmp

هر بار مقدار متفاوتی داره :

/tmp/phpjVDkEq
/tmp/phpto7WE0
/tmp/phpm3O1Rt
...

SohrabYousefi
سه شنبه 07 مرداد 1393, 15:25 عصر
خوب وقتی اون تابع کار نمیکنه شما چجوری میخوای آپلود کنی ؟!
اول یه phpinfo بزار و وقتی مطمئن شدی با ادمین هاست تماس بگیر
چون این تابع حتمال باید پیشفرض فعال باشه !

phpInfo هم گرفتم . ظاهرا همه چی درسته ولی مقدار upload_tmp_dir رو زده no value !
در صورتی که من فولدر tmp رو هم داخل public_html ساختم هم یه فولدر قبل از phblic_html .
شاید مشکل از این باشه که من خودم فولدر tmp رو ایجاد کردم ، چون روی هاست نبود . اینطور نیست ؟