2017-08-12 118 views
0

我有2子域:如何将一个子域的move_uploaded_file移动到另一个子域?

  1. admin.example.com - 管理面板
  2. static.example.com - 上传的文件

我怎么能使用move_uploaded_file上传文件从第一个子域根到第二个子域根?
上传功能:

define('UPLOAD_DIR', '/home/.../static.example.com/htdocs/uploads/'); 
define('UPLOAD_ADDR', 'http://static.example.com/uploads/'); 

define('TEMP_DIR', '/home/.../admin.example.com/htdocs/temp/'); 

function upload_file($input, $upload_subdir) { 

    if (!file_exists($_FILES[$input]['tmp_name'])) 
     return false; 

    $sha1file = sha1_file($_FILES[$input]['tmp_name']); 
    $tmp_name = TEMP_DIR . $sha1file; 
    $new_name = $upload_subdir . '/' . substr($sha1file, 0, 5) . '_' . $_FILES[$input]['name']; 

    move_uploaded_file($_FILES[$input]['tmp_name'], $tmp_name); 
    rename($tmp_name, UPLOAD_DIR . $new_name); 

    if (file_exists(UPLOAD_DIR . $new_name)) 
     return $new_name; 
    else 
     return false; 
} 


测试:

upload_file('image' /* Input name */, 'images' /* subdir in UPLOAD_DIR (this is existing dir) */); 

注:

  1. 服务器的操作系统是CentOS的
  2. UPLOAD_DIRTEMP_DIR是正确的绝对目录。另外我测试了相对目录不工作。
  3. 我直接测试move_uploaded_file没有复制文件到当前子域的临时目录)不起作用。
  4. 无警告显示
+1

'move_uploaded_file()'不关心主机名/域。只需告诉它你想在哪里存储文件。如果要从脚本位置使用相对URL,则应该使用'__DIR__'来获取脚本的绝对路径:'upload_file(__ DIR__。'/ image')''。 –

+1

如果出现问题,它几乎总是文件访问权限之一。尽管在子域中不应该这样。 – JBH

+0

Magnus Eriksson。 '__DIR __。'image /''上传文件到当前的子域名 –

回答

0

问题解决了。
这不起作用,因为php不能访问DOCUMENT_ROOT以外的其他文件夹。

相关问题