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)
有人能用我的问题解决方案来启发我吗?
最后一点说明:我知道我可以在子域上进行登录并直接在那里上传文件,但是我想保留在主域名上的登录用于其他目的.
提前致谢.
尤尔根
您的托管服务不允许您的脚本在httpdocs每个虚拟主机和共享/tmp目录的目录之外执行操作。这严重限制了站点之间信息交换的可能性。
我能想到的技巧:
将临时文件存储在/tmp源站点的目录中,并触发目标站点中的进程来获取该文件。您可以使用curl 函数来执行此操作。
将文件存储在公共数据库中。如果您认为存储会影响站点性能,则存储不必是永久性的。目标站点只需要检查它是否有待处理的传入文件。
将文件添加到队列(可能是内部的特殊目录httpdocs)并编写命令行脚本将它们推送到目标站点。使用 cron 运行此命令(假设每分钟一次)。
恕我直言,#2 看起来可行且可靠。