文件上传在PHP4上工作,但在PHP5上不工作


File Upload working on PHP4 but not PHP5

我有一个在本地安装中设计的应用程序(PHP4/MySQL),它运行得很好。自从我把它移到实时安装(PHP5/MySQL)后,我除了问题什么都没有!我在没有打开全局变量的情况下解决了任何全局变量问题(让我学习PDO,这不是一件坏事!),所以我唯一的问题是文件上传。我尝试了$_file的isset测试,但看起来变量从未设置过?有什么想法吗?

这是表单数据:

     <form enctype="multipart/form-data" method="post" action="script_add_product.php" >   
     <input class="cp_forms_upload" type="file" name="full_image" />
     <input class="cp_formsButton" type="submit" name="submit_button" value="Add Product" /></form>

这是PHP:

    $full_image_url = $_FILES["full_image"]["name"];     
    if ((($_FILES["full_image"]["type"] == "image/gif")
    || ($_FILES["full_image"]["type"] == "image/jpeg")
    || ($_FILES["full_image"]["type"] == "image/pjpeg")
    || ($_FILES["full_image"]["type"] == "image/png"))
    && ($_FILES["full_image"]["size"] < 400000))
      {
     if ($_FILES["full_image"]["error"] > 0)
      {
       echo "Return Code: " . $_FILES["full_image"]["error"] . "<br />";
       }
     else
       {
      echo "Upload: " . $_FILES["full_image"]["name"] . "<br />";
      echo "Type: " . $_FILES["full_image"]["type"] . "<br />";
      echo "Size: " . ($_FILES["full_image"]["size"] / 1024) . " Kb<br />";
      echo "Temp file: " . $_FILES["full_image"]["tmp_name"] . "<br />"; 
      if (file_exists("../Uploads/" . $_FILES["full_image"]["name"]))
       {
         echo $_FILES["full_image"]["name"] . " already exists. ";
        } 
      else 
         {
         move_uploaded_file($_FILES["full_image"]["tmp_name"],
         "../Uploads/" . $_FILES["full_image"]["name"]);
         echo "Stored in: " . "../Uploads/" . $_FILES["full_image"]["name"];
     echo "<br /><br /><br />" . $full_image_url;
         }
       }
      }
      else
      {
     echo "Invalid file";
       }

感谢各位:)

能否检查php.ini中的file_uploads是否设置为On

; Whether to allow HTTP file uploads.
; http://ph .net/file-uplollow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On

请参阅php.ini配置。

;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
; http://php.net/file-uploads
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
; http://php.net/upload-tmp-dir
upload_tmp_dir = "...../tmp"
; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 128M

此外,它可能是php.ini中有用的memory_limitmax_execution_time配置参数。更多:处理文件上传->常见陷阱

确保文件夹"../Uploads/"存在,并且有权在apache/nginx work(www_data或类似的)下为用户写入

这可能是问题所在吗?本节中的附加"("括号:

if (($_FILES["full_image"]["type"] == "image/gif")
    || ($_FILES["full_image"]["type"] == "image/jpeg")
    || ($_FILES["full_image"]["type"] == "image/pjpeg")
    || ($_FILES["full_image"]["type"] == "image/png"))
    && ($_FILES["full_image"]["size"] < 400000))
相关文章: