PHP:将文件从域移动到子域

Jur*_*gen 5 php subdomain file move

我在域上有一个站点,我们称之为" mydomain.com",人们可以登录.这个域有一个子域sub.mydomain.com.

当用户在主域上传文件时,我想将其移动到该uploads文件夹中sub.mydomain.com.我想将文件移动到的文件夹具有完全写入/读取权限.

我上传te文件的代码:

$filename = 'background_' . $_SESSION['username'] . '.jpg';
if (is_uploaded_file($_FILES['background']['tmp_name'])) 
    {  
        move_uploaded_file($_FILES['background']['tmp_name'], 
        "/var/www/vhosts/mydomain.com/subdomains/sub/httpdocs/uploads/" . $filename);
    }
Run Code Online (Sandbox Code Playgroud)

运行此代码时,我收到以下警告/错误:

Warning: move_uploaded_file() [function.move-uploaded-file]: open_basedir restriction in effect. File(/var/www/vhosts/mydomain.com/subdomains/sub/httpdocs/uploads/background_User.jpg) is not within the allowed path(s): (/var/www/vhosts/mydomain.com/httpdocs:/tmp) in /var/www/vhosts/dezeactie.nl/httpdocs/opmaak.php  on line 152
Run Code Online (Sandbox Code Playgroud)

有人能用我的问题解决方案来启发我吗?

最后一点说明:我知道我可以在子域上进行登录并直接在那里上传文件,但是我想保留在主域名上的登录用于其他目的.

提前致谢.

尤尔根

Álv*_*lez 4

您的托管服务不允许您的脚本在httpdocs每个虚拟主机和共享/tmp目录的目录之外执行操作。这严重限制了站点之间信息交换的可能性。

我能想到的技巧:

  1. 将临时文件存储在/tmp源站点的目录中,并触发目标站点中的进程来获取该文件。您可以使用curl 函数来执行此操作。

  2. 将文件存储在公共数据库中。如果您认为存储会影响站点性能,则存储不必是永久性的。目标站点只需要检查它是否有待处理的传入文件。

  3. 将文件添加到队列(可能是内部的特殊目录httpdocs)并编写命令行脚本将它们推送到目标站点。使用 cron 运行此命令(假设每分钟一次)。

恕我直言,#2 看起来可行且可靠。