0

我正在尝试调试 WordPress 3.5.1 的问题,我根本无法通过 HTTP 上传媒体;媒体上传器只是说“HTTP 错误”并失败。为了诊断发生了什么,我决定编写(即从 w3schools 复制)一个非常基本的 PHP 文件上传器,以查看幕后是否发生了一些奇怪的事情。但由于某种原因,该$_FILE结构根本不包含任何信息,即使在最基本的示例中也是如此:

文件.php:

<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  <label for="file">Filename:</label>
  <input type="file" name="file" id="file"><br>
  <input type="submit" name="submit" value="Submit">
</form>

</body>
</html>

上传.php:

<?php
if ($_FILES["file"]["error"] > 0)
{
  echo "Error: " . $_FILES["file"]["error"] . "<br>";
}
else
{
  echo "Upload: " . $_FILES["file"]["name"] . "<br>";
  echo "Type: " . $_FILES["file"]["type"] . "<br>";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
  echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
?>

在我尝试过的每个浏览器中,对于我尝试过的每个文件,这只是输出:

Upload: 
Type: 
Size: 0 kB
Stored in:

打印$_FILES显示它只是一个空数组。

PHP-5在共享主机(lunarpages)上使用,但php.ini文件已file_uploads打开,而且我尝试过的文件大小与upload_max_filesize. 我准备把我的笔记本电脑扔到墙上,所以任何帮助都会为我节省几千美元。

4

4 回答 4

0
$target="Your Path";
if(move_uploaded_file($_FILES['file']['tmp_name'], $target)) 
{
  echo "Upload: " . $_FILES["file"]["name"] . "<br>";
  echo "Type: " . $_FILES["file"]["type"] . "<br>";
  echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
  echo "Stored in: " . $_FILES["file"]["tmp_name"]; 
} 
else 
{ 
  echo "Unable to move temp file to target.";
} 
于 2013-07-19T05:57:15.163 回答
0

我曾经在共享主机上遇到过类似的问题。原来我没有设置 tmp 目录,因此没有上传任何内容。与您的主机检查您的 php.ini 设置是否正确,是否存在用于上传的 tmp 目录,并且您对其具有写入权限。

于 2013-07-09T22:14:24.850 回答
0

如果还不算太晚,您应该检查您的 apache 日志。最可能的原因是 apache - 以及您的 php 解释器 - 对您的预定义上传目录没有权限。

于 2013-11-25T10:46:13.447 回答
0
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  <label for="file">Filename:</label>
  <input type="file" name="file" id="file"><br>
  <input type="submit" name="submit" value="Submit">
</form>

<?php
phpinfo();
?>

</body>
</html>

这对我有用,$_FILES 不为空,使用常见的 Debian 安装 PHP 5.2;尝试将文件和目录的权限调整为 777

于 2013-06-13T21:42:34.490 回答