每当我将move_uploaded_file用于我上传的文件时,该文件总是在我的网络根目录中结束。我究竟做错了什么?该路径应该相对于我的Web根目录,还是应该是我文件系统上的绝对路径?
最终我正在尝试做什么,它有一个用于上传/下载文件的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 /网站/的public_html 我甚至尝试在public_html的其他子文件夹中发送文件,但仍然没有运气。
答案 0 :(得分:0)
啊,哈!目的地路径是相对的!
所以我的解决方案是:
echo move_uploaded_file($_FILES['txtFileSelector']['tmp_name'], "../files/".$_FILES['txtFileSelector']['name']
由于相对路径,请使用... /从Web根目录上移,然后将其移动到所需的存储文件夹。
CORRECTION
绝对路径或相对路径都可以。它是文件夹权限(www-data需要是拥有读取/写入权限的所有者或组成员)和我是一个白痴并发现编程错误的组合。我的代码是在php类中,上传是函数。在我的构造函数中,我的代码中有一个错误。做OO时,
之间存在很大差异$upload_dir = "/path/to/upload";
和
$this->upload_dir = "/path/to/upload";