move_uploaded_file()使用临时主机帐户域

时间:2013-03-08 21:01:55

标签: php file-upload upload cpanel

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

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]:无法打开流: 在......中没有该文件或目录 第63行/home/root_user/public_html/includes/functions.php

警告:move_uploaded_file()[function.move-uploaded-file]:无法移动 '/ tmp / phpJSKsYA'到'home / root_user / public_html / images / products / large / ty1bi.jpg' 在第63行的/home/root_user/public_html/includes/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/";

1 个答案:

答案 0 :(得分:1)

让我想知道错误是'家/ ...没有领先/的事实。可能是某个安全设置剥离它,让PHP认为它应该将文件放入一个名为home / ...的子目录下你的CWD。

尝试

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

代替