我正在工作的一个功能上传图像到我的网站fileserver,并在同一时间将创建一个拇指预览,并创建一个条目到我的mysql数据库。只要upload_image()函数正常工作,它就可以上传图像并完美地创建拇指。
问题是,当我点击提交按钮上传所选的图像时,PHP函数会完成它的工作,但会返回一个BLANK PAGE。是的,我知道,"另一个死亡问题的空白页,去找其他53个与这个问题相关的帖子,找到一个解决方案",对吧?可没那么简单。
我已经尝试了这些问题的每一种方法和另一堆我在这个被遗弃的地方发现的叫做互联网的东西,对我来说没有任何作用,我总是得到相同的空白页死亡,没有警告或错误。
我试过什么,你会问吗?以下是我记得的一组相关的解决方案:
- 配置PHP.INI的错误选项:DONE甚至为每个详细的错误创建日志文件。
- 用settings: DONE从php文件函数中重写php . ini的选项。我还使用了一个脚本从一些答案覆盖错误日志协议。
- 放置一个退出('wtf')函数从开始到底部,看看它是语法错误还是某一行的错误:DONE。每一行都将在被遗弃的空白页上打印WTF。
嗯,我也尝试过其他的解决方法,请随意提供一些答案,如果我已经尝试过了,我会告诉你的。
让我们开始吧。我调用php文件的HTML代码是:
<form action="assets/php/image_uploader.php" method="post" enctype="multipart/form-data">
<input type="file" name="myfile" id="fileToUpload">
</br>
</br>
<input type="text" name="title" value="Titulo" size="64">
<br>
<br>
<input type="submit" value="Upload Image" name="submit">
</form>
我的image_uploader。php代码是:
<?php
function upload_image()
{
$root = realpath($_SERVER["DOCUMENT_ROOT"]);
$name = "image_" . date('Y-m-d-H-i-s') . "_" . uniqid() . ".jpg";
$type= $_FILES["myfile"]["type"];
$size= $_FILES["myfile"]["size"];
$temp= $_FILES["myfile"]["tmp_name"];
$error= $_FILES["myfile"]["error"];
if ($error > 0)
{
die("Error uploading file! code $error.");
}
else
{
if($type=="image/png" || $size > 2000000)//condition for the file
{
die("Format not allowed or file size too big!");
}
else
{
if(move_uploaded_file($temp, $root . "/images/fulls/" . $name))
{
list($ancho, $alto) = getimagesize($root . "/images/fulls/" .$name);
$nuevo_alto = 212;
$nuevo_ancho = 212;
$dx = 0;
$dy = 0;
$sx = 0;
$sy = 0;
if($ancho == $alto)
{
}
else
{
if($ancho > $alto)
{
$nuevo_ancho = $ancho * (212/$alto);
}
else
{
$sy = $alto/2 - $nuevo_alto/2;
$alto = $ancho;
}
}
$thumb = imagecreatetruecolor($nuevo_ancho, $nuevo_alto);
$origen = imagecreatefromjpeg($root . "/images/fulls/" .$name);
imagecopyresampled($thumb, $origen, $dx, $dy, $sx, $sy, $nuevo_ancho, $nuevo_alto, $ancho, $alto);
imagejpeg($thumb, $root . "/images/thumbs/" .$name);
imagedestroy($thumb);
echo "The file ". basename( $_FILES["myfile"]["name"]). " has been uploaded.";
}
}
}
}
if(isset($_POST['submit']))
{
upload_image();
}
?>
try this:
$new_file = $root . "/images/fulls/" . $name;
copy($temp, $new_file);
if(!is_file($new_file)) {
die('cannot copy file');
}
也用:
try{
}
catch(Exception $ex) {die('['.$ex->getLine().'] '.$ex->getMessage());}
将代码放入HTML文件中,该文件后来被重命名为具有.php扩展名,并将表单部分中的函数调用为:
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" enctype="multipart/form-data">
<input type="file" name="myfile" id="fileToUpload">
</br>
</br>
<input type="text" name="title" value="Titulo" size="64">
<br>
<br>
<input type="submit" value="Upload Image" name="submit">
</form>
现在它就像魔术一样工作,我不知道htmlspecialchar()函数是否与它有任何关系,但现在代码工作没有错误。因此,我想把这篇文章作为一个答案,但提醒你不要把它当作空白页死屏的解决方案。