2014-10-30 62 views
-1

每当我将move_uploaded_file用于上传的文件时,该文件总是以我的web根目录结束。我究竟做错了什么?该路径应该相对于我的web根目录,还是应该是我的文件系统上的绝对路径?php move_uploaded_file总是以webroot结尾

最终,我想要做的,它有一个文件夹为PHP上传/下载文件。我不想让网络机器人和其他人只是为了能够访问这些文件,我只想要使用我的网站进行身份验证的人能够下载文件。所以,这就是我有我的文件结构布局:

/var/www/website/public_html 

/var/www/website/files 

和我move_uploaded_file命令是这样的:

move_uploaded_file($_FILES['txtFileSelector']['tmp_name'], "/var/www/website/files/".$_FILES['txtFileSelector']['name']); 

但无论怎样我已经试过,文件总是在 /var/www/website/public_html 我甚至尝试在public_html的其他子文件夹中发送文件,但仍然没有运气。

+1

使用move_uploaded_file($ _ FILES [ 'txtFileSelector'] [ 'tmp_name的值'],GETCWD()。DIRECTORY_SEPARATOR。“文件之间有很大的区别/'.$ _FILES [ 'txtFileSelector'] [ '名称']); – 2014-10-30 06:23:54

回答

0

啊哈!目的地路径是相对的!

所以我的解决办法是:

echo move_uploaded_file($_FILES['txtFileSelector']['tmp_name'], "../files/".$_FILES['txtFileSelector']['name'] 

因为相对路径功能,使用... /从Web根上去,然后将其移动到所需的存储文件夹。

更正

绝对路径或相对路径可以工作。这是文件夹权限的组合(www数据需要是拥有读/写权限的所有者或组成员),并且我是一个白痴并且发现了一个编程错误。我的代码是在一个PHP类和上传功能。在我的构造函数中,我的代码中有一个错误。在做OO有

$upload_dir = "/path/to/upload"; 

$this->upload_dir = "/path/to/upload"; 
+0

如果使用相对路径,路径是相对的。由于在原始文章中你使用了绝对路径(以'/'开头),路径应该是绝对路径。这里有点奇怪! – deceze 2014-10-31 05:21:16