2012-09-02 43 views
2

我在使用PHP move_uploaded_file命令时遇到实际问题,无法在共享Apasche虚拟主机服务器上正常工作。PHP的move_uploaded_file建议

如果我想创建一个文件夹(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/" 

任何想法,我做错了。该脚本被接受,但似乎会出现不匹配......

+1

如果您使用完全访问文件夹:'0777'吗? – Krycke

+0

它应该工作,如果你是从PHP脚本创建文件夹。那么它将由您的www-unix-user(最初启动Web服务器的用户)拥有。通过ftp创建一个文件夹,然后写入文件夹,需要在3日/ 4日有更高的5格 - 因为所有者可能是不同的。 – mschr

回答

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); 
} 
+0

我认为你已经在tmp文件似乎并没有出现在这个问题上,尽管它每次给我一个路径和独特的(?)。我在绝对和本地的道路上尝试过它,但没有快乐。接下来我该做什么? –

+0

@EdwardHasted你怎么把这个文件放在那里?它是否通过HTTP POST上传?它是否存在,如果是这样 - 是否有足够的权限? –

0

的解决方案似乎是在$ target_path实际上是一个文件。文件没有特别说明。然而,当你开始查找代码时,desitination是一个路径和文件名......当我做出这个改变时,它立即起作用。