我正在運行一個腳本,它移動上傳文件時使用move_uploaded_file()
。我已經做了這麼多次,但由於某種原因,它無法正常工作。我已經confimred如下:使用method="post"
和正確enctype
move_uploaded_file不起作用,沒有錯誤
<form>
從形式引用
- 正確的文件
- 目錄有權限
777
- 所有
memory_limit
,max_execution_time
等被設置爲超高設置避免超時
基本上,下面的腳本返回只有Your image is too big.
。我還啓用了所有錯誤顯示,但仍然沒有出現錯誤。有任何想法嗎?
$time = time();
$target_path = "/absolute/path/to/temp/directory/temp/";
$target_path = $target_path.$time.'.jpg';
if(move_uploaded_file($_FILES['image']['tmp_name'], $target_path)) {
} else{
$error .= '<li>Your image is too big.</li>';
}
使用的1and1與php.ini的黑客主機:P
更新1
我想從腳本發生正好60秒後補充一點反應。
更新2
我們可能會用這個地方得到。只是print_r($_FILES)
這是陣列的結果:
Array (
[image] => Array (
[name] => P2120267.JPG
[type] =>
[tmp_name] =>
[error] => 1
[size] => 0
)
)
所以這使我相信該文件無法正確上傳到服務器或什麼?我已檢查併發布表格是<form action="" method="post" enctype="multipart/form-data">
。那麼,從我所知道的情況來看,文件沒有被上傳到服務器的臨時區域?
UPDATE 3
上述陣列中的注意的[error] => 1
。這顯然低至the filesize being larger than the upload_max_filesize
。但是,當我將此設置爲128M
時,我在60秒後出現白屏。我上傳的文件2.5MB
這裏是我的php.ini文件:
register_globals=off
memory_limit = 128M
max_execution_time=3600
post_max_size = 128M
upload_max_filesize= 128M
UPDATE 4
通過上面的詳細信息,看來我得到一個WSOD,但圖像正在上傳。那麼,如何阻止WSOD?我找不到任何相關的錯誤。
UPDATE 5 - FOUND IT!
對我沒有給你們所有的代碼感到羞恥。它看起來像它與這條線做:
resizeImage($feedBurnerStatsSource, PHOTOMSGDIR.'temp/'.$time.'-tmp.jpg',$width,$height);
在下面的代碼:
function resizeImage($source, $destination = NULL,$wdt, $height = NULL){
if(empty($height)){
// Height is nit set so we are keeping the same aspect ratio.
list($width, $height) = getimagesize($source);
if($width > $height){
$w = $wdt;
$h = ($height/$width) * $w;
$w = $w;
}else{
$w = $wdt;
$h = $w;
$w = ($width/$height) * $w;
}
}else{
// Both width and Height are set.
// this will reshape to the new sizes.
$w = $wdt;
$h = $height;
}
$source_image = @file_get_contents($source) or die('Could not open'.$source);
$source_image = @imagecreatefromstring($source_image) or die($source.' is not a valid image');
$sw = imagesx($source_image);
$sh = imagesy($source_image);
$ar = $sw/$sh;
$tar = $w/$h;
if($ar >= $tar){
$x1 = round(($sw - ($sw * ($tar/$ar)))/2);
$x2 = round($sw * ($tar/$ar));
$y1 = 0;
$y2 = $sh;
}else{
$x1 = 0;
$y1 = 0;
$x2 = $sw;
$y2 = round($sw/$tar);
}
$slate = @imagecreatetruecolor($w, $h) or die('Invalid thumbnail dimmensions');
imagecopyresampled($slate, $source_image, 0, 0, $x1, $y1, $w, $h, $x2, $y2);
// If $destination is not set this will output the raw image to the browser and not save the file
if(!$destination) header('Content-type: image/jpeg');
@imagejpeg($slate, $destination, 75) or die('Directory permission problem');
ImageDestroy($slate);
ImageDestroy($source_image);
if(!$destination) exit;
return true;
}
所以,WSOD意味着它沒有消息的某種死亡。有任何想法嗎?
嘗試'print_r($ _ FILES);'查看完整的FILES數組。它可能包含錯誤代碼。你的錯誤信息並沒有真正有意義,因爲你沒有做大小檢查,*每個錯誤條件都會返回「圖像太大」 – 2011-04-13 21:33:07
文件名可能無效。該文件密鑰集? – 2011-04-13 21:33:27
如果你沒有得到任何錯誤消息,請嘗試'copy()'而不是'move_uploaded_file()'。在這種情況下也可以看一下'error.log'。 – mario 2011-04-13 21:34:02