PHP表单功能正在运行但返回空白页面

时间:2015-07-15 23:46:13

标签: php html

我正在开发一个将图像上传到我的网站文件服务器的功能,同时会创建一个拇指预览并创建一个我的mysql数据库的条目。只要upload_image()的功能正常工作,它就会上传图像并完美地创建一个拇指。

问题是,当我单击提交按钮上传所选图像时,PHP函数会完成其工作,但会返回BLANK PAGE。是的,我知道,“死亡问题的另一个空白页面,去查找与此问题相关的所有其他53个帖子并找到解决方案”对吗?嗯,这不是那么简单。

我已经尝试了这些问题中的每一种方法,并且我在这个被遗弃的地方找到了另一组称为互联网,没有什么对我有用,我总是得到相同的死亡空白页,没有任何警告或错误。

我会问你尝试过什么?以下只是我回忆起的一组相关解决方案:

  1. 配置PHP.INI的错误选项:DONE。甚至为每个详细错误创建日志文件。
  2. 使用以下设置从php文件函数覆盖PHP.INI的选项:DONE。此外,我使用了一些覆盖错误日志协议的答案的脚本。
  3. 从头到尾放置一个退出('wtf')函数,查看它是语法错误还是某行错误:DONE。每一行都会在被遗忘的空白页上打印出WTF。
  4. 嗯,我尝试了其他解决方案,作为我的客人并提供一些答案,如果我已经尝试过,我会告诉你。

    让我们接受它。我调用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();
    } 
    ?>
    

2 个答案:

答案 0 :(得分:0)

试试这个:

$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());}

答案 1 :(得分:0)

将代码放入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()函数是否与它有关,但现在代码没有错误。因此,我会将此作为答案发布,但提醒您不要将其视为BLANK PAGE死亡屏幕的解决方案。