php和符号链接


php and symbolic links

我想制作一个要下载的文件的临时副本,所以我使用了符号链接。它在我的本地主机上工作,但当我上传它时,它不工作!!我检查了"tmp"目录的权限。这是代码:

$symlink = GenName($name);
$pwd = exec("pwd");
exec('ln -s "'.$pwd.'/videos/'.$name.'" "'.$pwd.'/tmp/'.$symlink.'"');

任何想法如何修复它或另一个想法来保护原始文件并提供临时文件当然不是副本,没有空间!!!

用符号链接破坏整个方法!如果您想允许临时访问文件,请使用PHP脚本。给你的用户一个类似example.com/download.php?file=foobar&token=abcdef12345的URL,它将由这样的脚本处理:

if (!is_valid($_GET['token']) /* your validation logic here */) {
    die('Invalid token');
}
// your content type here
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="downloaded.pdf"');
readfile('original.pdf');

参见headerreadfile