【问题标题】:php uploaded file does not existphp上传的文件不存在
【发布时间】:2013-12-31 02:55:25
【问题描述】:

我已经确定 /tmp 文件夹是可写的,并且在 php.ini 中

upload_max_filesize = 5M
post_max_size = 8M

在我的upload.html中

<html>
<body>

<form action="upload_file.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>

在我的upload_file.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"];
  move_uploaded_file ($_FILES["file"]["tmp_name"] , '/var/www/html/web' );
  }
?> 

这是输出

Upload: screenshot 2013-12-30 15:00:54.png
Type: image/png
Size: 201.8154296875 kB
Stored in: /tmp/phpEdIgXr 

但是 /tmp/phpEdIgXr 不存在!

【问题讨论】:

  • 你怎么知道的? file_exists($_FILES["file"]["tmp_name"]) 真的返回 false 吗?
  • 不存在是什么意思?
  • 我检查了服务器的文件系统,文件不可用。早些时候,我尝试在更复杂的应用程序上执行移动,但我尝试将此作为基本情况。失败了。
  • 那是一个临时文件。当 php 进程停止时,它会被删除。您需要将文件的内容复制到永久位置。
  • 请记住,一旦脚本完全执行,临时文件会立即被删除。为了保留它,请将其移到其他地方。

标签: php upload


【解决方案1】:

只需输入以下代码并尝试。可能对你有帮助。

if ($_FILES["file"]["error"] > 0)
    {
        echo "Apologies, an error has occurred.";
        echo "Error Code: " . $_FILES["file"]["error"];
    }
    else
    {
        move_uploaded_file($_FILES["file"]["tmp_name"],"[YOUR FOLDER PATH]".$_FILES["file"]["name"]); 
    }

【讨论】:

  • 谢谢,我忘记在目标路径后面指定文件名了。
【解决方案2】:

对于要在目录中显示的任何上传文件,您需要chmod 777 该文件夹。

【讨论】:

  • 出于安全原因,朋友不要让其他朋友 777 他们的上传文件夹;) 授予 PHP 写入文件夹的权限需要 chmod 和 chown 的组合。所以该文件夹的所有者应该是 Web 服务器(如果是 Apache,通常是 www-data)或 cgi,所以 chmod 755 就足够了。
猜你喜欢
  • 2013-08-23
  • 1970-01-01
  • 1970-01-01
  • 2014-07-14
  • 2013-06-04
  • 1970-01-01
  • 2011-07-28
  • 2014-04-18
  • 1970-01-01
相关资源
最近更新 更多