PHP在文件夹中工作但在另一个文件夹中不工作

时间:2011-07-30 00:32:53

标签: php

好的,所以我在.html页面和.php页面上创建了一个表单来上传图像,然后从表单中保存som数据以及图像的文件路径。问题是当我将它从根文件夹移动到root / backweb时它不会工作。我在backweb文件夹中创建了一个新的uploads文件夹,并且为了简单起见,还将conn.inc.php文件复制到了backweb文件夹中。

当我从根本上运行它时,它说“释放sparades!” (已保存发布)但是当我从backweb服务器运行它时,它会显示“Ogiltig filtyp!...”(文件类型无效)。有什么想法吗?

以下是代码:

<?
require_once 'conn.inc.php';

if (($_FILES["cover"]["type"] == "image/gif")
|| ($_FILES["cover"]["type"] == "image/png")
|| ($_FILES["cover"]["type"] == "image/jpeg")
|| ($_FILES["cover"]["type"] == "image/pjpeg"))
  {
  if ($_FILES["cover"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["cover"]["error"] . "<br />";
    }
  else
    {

    if (file_exists("uploads/" . $_FILES["cover"]["name"]))
      {
      echo $_FILES["cover"]["name"] . " finns redan på servern. ";
      }
    else
      {
      move_uploaded_file($_FILES["cover"]["tmp_name"],
      "uploads/" . $_FILES["cover"]["name"]);
      $cover = "uploads/" . $_FILES["cover"]["name"];
      }
    }
  }
else
  {
  echo "Ogiltig filtyp! Endast bilder &auml;r till&aring;tna (.jpg, .png och .gif)</br>
  <a href=\"uploadform.html\">F&ouml;rs&ouml;k igen</a>";
  }


$band = $_REQUEST["band"];
$title = $_REQUEST["title"];
$catnum = $_REQUEST["catnum"];
$format = $_REQUEST["format"];

$query = "INSERT INTO releases (band,title,catnum,format,cover) VALUES ('$band','$title','$catnum','$format','$cover')";

$result = mysql_query($query);
    if ($result == NULL)
    {
        echo "N&aring;got gick fel, releasen sparades ej!";
        ?>
        <br/>
        <br/>
        <a href="editreleases.php">Försök igen!</a>
        <?
    }
    else
    {
        echo "Releasen sparades!";
    }
?>

3 个答案:

答案 0 :(得分:1)

您必须提供正确的目录路径,即

if (file_exists("../uploads/" . $_FILES["cover"]["name"]))

VS

if (file_exists("uploads/" . $_FILES["cover"]["name"]))

答案 1 :(得分:0)

声音文件夹权限没有设置为PHP访问非根文件夹中的文件

答案 2 :(得分:0)

也许您应该使用is_uploaded_file代替file_exists?并使用$_FILES["cover"]["tmp_name"]作为文件的路径。 PHP手册中的示例:

if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{
   echo "File ". $_FILES['userfile']['name'] ." uploaded successfully.\n";
   echo "Displaying contents\n";
   readfile($_FILES['userfile']['tmp_name']);
}
else
{
   echo "Possible file upload attack: ";
   echo "filename '". $_FILES['userfile']['tmp_name'] . "'.";
}

另外,正如@trailmax所说,检查PHP是否可以实际访问上传的文件夹文件。