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

文件上载在PHP4上工作,但不在PHP5上工作,php,mysql,file-upload,Php,Mysql,File Upload,我有一个本地安装的应用程序(PHP4/MySQL),它工作得非常好。自从我将它移动到实时安装(PHP5/MySQL)后,除了问题之外,我什么都没有!我在没有打开全局变量的情况下修复了所有全局变量问题(引导我学习PDO,所以这不是一件坏事!),所以我唯一的问题是文件上传。我尝试了对$\u文件进行isset测试,看起来变量从未设置过?有什么想法吗 以下是表格数据: <form enctype="multipart/form-data" method="post" action="sc

我有一个本地安装的应用程序(PHP4/MySQL),它工作得非常好。自从我将它移动到实时安装(PHP5/MySQL)后,除了问题之外,我什么都没有!我在没有打开全局变量的情况下修复了所有全局变量问题(引导我学习PDO,所以这不是一件坏事!),所以我唯一的问题是文件上传。我尝试了对$\u文件进行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";
       }
$full\u image\u url=$\u文件[“full\u image”][“name”];
如果(($_文件[“完整图像”][“类型”]=“图像/gif”)
||($_文件[“完整图像”][“类型”]=“图像/jpeg”)
||($_文件[“完整图像”][“类型”]=“图像/pjpeg”)
||($_文件[“完整图像”][“类型”]=“图像/png”))
&&($_文件[“完整图像”][“大小”]<400000))
{
如果($_文件[“完整图像”][“错误”]>0)
{
回显“返回代码:”.$\u文件[“完整图像”][“错误”]。“
”; } 其他的 { echo“上传:.”文件[“完整图像”][“名称”]。“
”; 回显“类型:”.$\u文件[“完整图像”][“类型”]。“
”; 回显“大小:”($_文件[“完整图像”][“大小”]/1024)。“Kb
”; 回显“临时文件:.”文件[“完整图像”][“tmp\U名称”]。“
”; 如果(文件存在(“../Uploads/”$\u文件[“完整图像”][“名称”])) { echo$\u文件[“完整图像”][“名称”]”已存在。“; } 其他的 { 移动上传的文件($文件[“完整图像”][“tmp文件名”], “./上传/”$_文件[“完整图像”][“名称”]); echo“存储在:”.“./Uploads/”$\u文件[“完整图像”][“名称”]; 回显“


”。$full\u image\u url; } } } 其他的 { 回显“无效文件”; }

谢谢大家:)

如果
上传的
文件设置为
On
,请检查
php.ini

;是否允许HTTP文件上载。
; http://ph .net/文件上载HTTP文件上载。
; http://php.net/file-uploads
文件上传=打开

请参见
php.ini
config

;;;;;;;;;;;;;;;;
; 文件上传;
;;;;;;;;;;;;;;;;
; 是否允许HTTP文件上载。
; http://php.net/file-uploads
文件上传=打开
; HTTP上载文件的临时目录(如果不是,将使用系统默认值
;具体说明)。
; http://php.net/upload-tmp-dir
upload_tmp_dir=“…../tmp”
; 上载文件允许的最大大小。
; http://php.net/upload-max-filesize
上载\u最大\u文件大小=128M
此外,它还可能有用
php.ini中的
内存限制
最大执行时间
配置参数。 更多:


确保文件夹
“./Uploads/”
存在,并且有权在apache/nginx工作(
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))
if($_文件[“完整图像”][“类型”]=“图像/gif”)
||($_文件[“完整图像”][“类型”]=“图像/jpeg”)
||($_文件[“完整图像”][“类型”]=“图像/pjpeg”)
||($_文件[“完整图像”][“类型”]=“图像/png”))
&&($_文件[“完整图像”][“大小”]<400000))

美元POST输出的内容是什么?变量转储($\u POST);您确定要上载的图像大小不超过upload_max_filesize值吗?好的,我测试了大小仅为20kb的图像。上传最大文件大小为16M。Bono,我如何进行var_转储?我想@Bono考虑了var_转储($\文件)。您当前的php5版本是什么?最新版本5.4.5?你用的是suhosin吗?@mrock-version是5.2.17,但我用的是第三方托管。不确定他们是否在使用suhosin?嗨,这是phpinfo()的结果,如果这有帮助的话?上传\u最大\u文件大小16M 16M上传\u tmp\u目录无值无值我测试代码。它有效!。。所以我认为这是没有许可证或没有这样的文件夹。如果可能的话,查看日志会很有帮助。如果无法查看日志,只需插入
var_dump(…)在每个步骤上。或
echo'xbcvxcvx';死亡
要查看错误发生的位置,您还可以设置自己的错误处理程序(如果尚未使用),自己将错误记录到某个文件…-为了未来。我会在任何一行上尝试错误处理,看看是否可以缩小范围。该文件夹存在,测试时设置了$u文件,尝试直接链接(…etc)到该文件夹时运气不佳。我想这一定是服务器的问题,但是如果Wordpress可以在上面运行…@Nikola K,这个文件夹是存在的。不确定CHMOD是否适用于Windows Server-无论如何都尝试过:500“SITE CHMOD 755 upload”:命令未被理解,phpinfo()告诉我文件上传已打开?@Sarke我在回答中更正了它。我指的是发布的一篇文章。检查他所说的代码supplied@asprin我使用的是这里的代码,具有讽刺意味的是,当我将代码放入PHP IDE时,它告诉我这行代码有问题://&&in_array($extension,$allowedExts))在检查扩展时。所以我对它进行了评论,但对最终结果没有异议。@asprin他的括号匹配,你的括号不匹配。请注意,它是几个OR,然后是and,OR被分组在一起。请参见第二行至最后一行有一个额外的闭合括号来闭合OR组。