0

我正在尝试使用 PHP 使用函数上传图像move_uploaded_file()

PHP

// Get image variables
$file = $_FILES['image']['tmp_name'];
$path = "images/products/large/";
$image_hash = "ty1bi"; // This would be generated

//I have also tried this: $path = "home/the_user/public_html/images/products/large/";
//$_SERVER['DOCUMENT_ROOT'] is equal to home/root_user/public_html/

// Upload image
if(!move_uploaded_file($file, $path . $image_hash . ".jpg")) {      
  header("location:admin/add.php?e=1");
  exit;
}

目前,我得到:

警告:move_uploaded_file(home/root_user/public_html/images/products/large/ty1bi.jpg) [function.move-uploaded-file]:无法打开流:/home/root_user/public_html/includes/ 中没有这样的文件或目录第 63 行的functions.php

警告:move_uploaded_file() [function.move-uploaded-file]:无法将 '/tmp/phpJSKsYA' 移动到 /home/root_user/public_html/ 中的 'home/root_user/public_html/images/products/large/ty1bi.jpg'第 63 行包含/functions.php

托管帐户是在 WHM 中设置的,我正在通过/~the_user/目录访问该站点。因此,站点名称可以是主/根主机域名或服务器 IP 地址,后跟/~the_user.

因为错误显示的/root_user是 WHM 主机的用户名,所以我认为它无法访问/~the_user. 我已经尝试更改文档根目录,$path因此它从开始home/并包含/the_user,但我也没有运气。

有没有办法做到这一点,还是我必须在域名上使用/测试它?

更新

因为文档根目录位于根用户名下,所以发生的问题是绝对路径的正确构建。通过构建路径,我的方向是正确的,但这是绝对的,因为路径字符串开头缺少斜杠。

这行代码帮助解决了这个问题:

$path = "/home/the_user/public_html/images/products/large/";

4

1 回答 1

1

让我想知道错误是'home/...没有前导/。可能是某个地方的安全设置将其剥离,使 PHP 认为它应该将文件放入 CWD 下名为 home/... 的子目录中。

尝试

/home/.....
^---

反而

于 2013-03-08T21:41:01.020 回答