2

我在使用 PHPmove_uploaded_file命令在共享的 Apasche Web 托管服务器上正常工作时遇到了真正的问题。

如果我想创建一个文件夹 ( mkdir) 我必须使用完整的路径名,例如

$target_path = "/home/myhostingname/public_html/uploads/files/".$lastID;
mkdir($target_path, 0755);

这行得通,创建了唯一的文件夹并使用 FileZilla 我可以将文件上传到它。

但是,当我尝试使用move_uploaded_file命令的完整路径时,什么都没有上传。例如

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/"

任何想法我做错了什么。该脚本已被接受,但似乎发生了不匹配...

4

2 回答 2

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);
}
于 2012-09-02T13:57:50.960 回答
0

解决方案似乎是 $target_path 实际上是一个文件。该文档并没有特别清楚地说明这一点。但是,当您开始查找有效的代码时,目标是路径和文件名...当我进行此更改时,它立即起作用。

于 2012-09-11T11:35:53.200 回答