php – move_uploaded_file不起作用,没有错误
|
我正在运行一个脚本,该脚本使用move_uploaded_file()移动上传的文件.我做了好几千次,但由于某种原因,它不起作用.我已经克服了以下内容:
>< form>使用method =“post”并更正enctype 基本上,下面的脚本返回只是你的图像太大..我也启用了所有错误显示,仍然没有出错.有任何想法吗? $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 hack: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”>.那么,据我所知,该文件没有上传到服务器的临时区域? 更新3 注意到[错误] =>上面的数组中的1.这显然低至the filesize being larger than the 这是我的php.ini文件: register_globals=off memory_limit = 128M max_execution_time=3600 post_max_size = 128M upload_max_filesize= 128M 更新4 有了上面的详细信息,我似乎得到了一个WSOD,但图像正在被上传.那么,如何阻止WSOD?我无法找到任何相关的错误. 更新5 – 发现它! 对我没有给你们所有的代码感到羞耻.看起来它与这一行有关: 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,$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意味着它的某种模具没有消息.有任何想法吗?
只是要验证post_max_filesize设置为高级别?因为根据php.net:
需要考虑的事情. 有关详细信息,请参阅this link并向下滚动到post_max_filesize部分 UPDATE 根据我的经验,如果你得到一个WSOD,通常会关闭error_reporting和display_errors或者达到memory_limit.在顶部的脚本中,我通常将memory_limit设置为1024M以验证是不是问题,并启用error_reporting和display_errors …所以在文件上传之前将其放入: error_reporting(E_ALL); // or E_STRICT
ini_set("display_errors",1);
ini_set("memory_limit","1024M");
这通常会摆脱WSOD并让你和错误一起工作. UPDATE 您是否尝试在所有函数前取消@错误抑制以查看它们是否产生特定错误?你还有什么执行和输入超时?你能验证发送的标题吗? (确保它是Content-Type = text / html;) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
