我遇到了PHP move_uploaded_file
命令的实际问题,无法在共享的Apasche Web托管服务器上正常工作。
如果我想创建一个文件夹(mkdir
),我必须使用完整的路径名,例如
$target_path = "/home/myhostingname/public_html/uploads/files/".$lastID;
mkdir($target_path, 0755);
这样做,创建了唯一文件夹,使用FileZilla我可以将文件上传到它。
然而,当我尝试使用move_uploaded_file
命令的完整路径时,没有任何内容被上传。 E.g。
move_uploaded_file($tmp_file, $target_path);
其中,例如:
$tmp_file = "/home/myhostingname/public_html/tmp/php8MR5Qv/test.gif"
$target_path = "/home/myhostingname/public_html/uploads/files/130/"
任何想法我做错了什么。该脚本已被接受,但似乎存在不匹配...
答案 0 :(得分:2)
来自$tmp_file
的文件应通过HTTP POST请求上传,否则move_uploaded_file
将无效。
要检查文件是否已上传,请使用is_uploaded_file
所以你的代码可能如下所示:
$tmp_file = "/home/myhostingname/public_html/tmp/php8MR5Qv/test.gif"
$target_path = "/home/myhostingname/public_html/uploads/files/".$lastID;
if(is_uploaded_file($tmp_file)){
mkdir($target_path, 0755);
move_uploaded_file($tmp_file, $target_path);
}
答案 1 :(得分:0)
解决方案似乎是$ target_path实际上是一个文件。文档并没有特别清楚。然而,当你开始找到有效的代码时,desitination就是一个路径和文件名......当我做出这个改变时,它会立即起作用。