我正在关注本教程:Tutorial 在PHP脚本中,它使用GD库来移动和保存文件。 当我在我的本地WAMP服务器上使用它时,此脚本工作正常。 但是当我将它上传到我在HosHosting上的托管时却没有,当我使用JPEG或PNG文件时,它可以工作,但是当我使用.JPG文件时,它不起作用。
这是代码的一部分:
$sTempFileNameFirst = TEMPLATEPATH;
$sTempFileNameFirstSrc = get_bloginfo('template_directory');
$sTempFileNameLast = '/cache/' . md5(time().rand());
$sTempFileName = $sTempFileNameFirst . $sTempFileNameLast;
$sTempFileNameSrc = $sTempFileNameFirstSrc . $sTempFileNameLast;
// move uploaded file into cache folder
move_uploaded_file($_FILES['upload-image']['tmp_name'], $sTempFileName);
// change file permission to 644
@chmod($sTempFileName, 0644);
if (file_exists($sTempFileName) && filesize($sTempFileName) > 0) {
$aSize = getimagesize($sTempFileName); // try to obtain image info
if (!$aSize) {
@unlink($sTempFileName);
return;
}
// check for image type
switch($aSize[2]) {
case IMAGETYPE_JPEG:
$sExt = '.jpg';
echo("jpg");
// create a new image from file
$vImg = @imagecreatefromjpeg($sTempFileName);
break;
case IMAGETYPE_PNG:
$sExt = '.png';
// create a new image from file
$vImg = @imagecreatefrompng($sTempFileName);
break;
default:
@unlink($sTempFileName);
echo("unlink");
return;
}
echo("before truecolor");
// create a new true color image
$vDstImg = @imagecreatetruecolor( $iWidth, $iHeight ) or die ("can't open gd stream");
echo("after imagetruecolor");
// copy and resize part of an image with resampling
imagecopyresampled($vDstImg, $vImg, 0, 0, (int)$_POST['x1'], (int)$_POST['y1'], $iWidth, $iHeight, (int)$_POST['width'], (int)$_POST['height']);
echo("after resample");
// define a result image filename
//$sResultFileName = $sTempFileName . $sExt;
$sResultFileNameSrc = $sTempFileNameSrc . $sExt;
echo($sResultFileNameSrc);
// output image to file
imagejpeg($vDstImg, $sResultFileName, $iJpgQuality);
@unlink($sTempFileName);
return $sResultFileNameSrc;
正如你所看到的,我使用echo来查看它的工作原理和不工作的地方。因此,对于JPEG和PNG文件,每个代码都可以工作,但每当我使用JPG文件时,@ imagecreatetruecolor之前的回声都会起作用,但之后无效。所以问题是该功能不会执行。此功能后的“或死”部分也不起作用。
可能是什么问题? PHPINFO()表示已启用GD信息并已捆绑版本(2.1.0)