PHP:move_uploaded_file()无法打开流:没有这样的文件或目录

时间:2012-06-08 15:00:43

标签: php apache file-upload

我正在尝试让PHP将上传的文件从tmp目录移动到我的网络服务器上的永久文件。这看起来很简单,但我收到了这个错误:

Unable to move 'C:\UniServer\tmp\php3F62.tmp' to 'static/images/slides/1/1.jpg'

非常直接,对吧?它找不到目标文件夹。

我的问题是:如何引用所需的目标目录?

引用是否相对于脚本在服务器上的位置?或者它相对于URL?还是PHP DOCUMENT_ROOT?还是操作系统的文件系统?或其他什么?

我无法在PHP文档中找到答案,或者在SO ...中找到任何类似的问题。

有人可以帮忙吗?感谢。

5 个答案:

答案 0 :(得分:30)

跟踪路径的一种简单方法就是在index.php中定义绝对路径

define ('SITE_ROOT', realpath(dirname(__FILE__)));

然后就像使用它一样:

move_uploaded_file($_FILES['file']['tmp_name'], SITE_ROOT.'/static/images/slides/1/1.jpg');

答案 1 :(得分:3)

我的上传时遇到了同样的问题。看看我的例子,也许它可以帮到你。

我创建的文件名为“uploads”。

$uploads_dir = 'uploads/';
$name = $_FILES['userfile']['name'];
if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{       
    //in case you want to move  the file in uploads directory
     move_uploaded_file($_FILES['userfile']['tmp_name'], $uploads_dir.$name);
     echo 'moved file to destination directory';
     exit;
}

答案 2 :(得分:0)

它来自脚本在服务器上的位置!而且,您需要在此文件夹中具有写入权限:

'static/images/slides/1/1.jpg'

相反,最好以这种方式使用绝对路径:

'C:\UniServer\***\static\images\slides\1\1.jpg

使用绝对路径。

答案 3 :(得分:0)

$destination = dirname(dirname(dirname(dirname(__FILE__))))."/runtime/tmp/";
chown($destination, 0755);
move_uploaded_file($info['tmp_name'], $destination.$info['name']);

这是我的解决方案,我只是使用mkdir创建一个目录来放置我要移动的图片。 希望它有所帮助。

答案 4 :(得分:0)

我认为这将为您提供帮助,而不会给您任何错误:

$image = $_FILES['image']['name'];
$image_temp =$_FILES['image']['tmp_name'];
$target='C:/xampp/htdocs/jer/images/'.basename($_FILES['image']['name']);
move_uploaded_file($image_temp, "$target");
insert into images (images) values ('$target');