Php 输出文件内容是否与直接访问相同?

Php 输出文件内容是否与直接访问相同?,php,file,filesystems,file-access,Php,File,Filesystems,File Access,我在服务器上有一个名为“file.pdf”的文件,我无法像这样直接访问它: servername.com/file.pdf, 因为它位于servername.com重定向到的文件夹的上层 我需要使用php获取文件,然后输出,所以它看起来像这样: servername.com/get_file.php?filename=file.pdf 这是我尝试的,但是,它不起作用: <?php $filename = $_GET['filename']; header('Location

我在服务器上有一个名为“file.pdf”的文件,我无法像这样直接访问它:
servername.com/file.pdf
, 因为它位于servername.com重定向到的文件夹的上层

我需要使用php获取文件,然后输出,所以它看起来像这样:
servername.com/get_file.php?filename=file.pdf

这是我尝试的,但是,它不起作用:

<?php
    $filename = $_GET['filename'];
    header('Location: ../seedbox/downloads/knygos' . $filename);
?>

有关于如何访问该文件的解决方案吗?

在您的“解决方案”中,您又犯了完全相同的错误。您再次尝试通过web根目录(公用文件夹,httpdocs,…)下的HTTP直接访问文件

您已经提出了正确的解决方案,即使用PHP获取文件并提供服务,但是您没有这样做。您有两种主要的解决方案:

将文件移动到公共位置

在这里,您可以将文件位置永久更改为类似于
mysite.com/downloads/file.pdf的位置,也可以使用PHP动态更改文件位置:

copy('../files/file.pdf', 'downloads/file.pdf');
即时提供文件

header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=file.pdf");

readfile('../files/file.pdf');