好的,我们有一台运行Cpanel的服务器,我们已经设置了一个帐户/域作为可下载媒体的中央存储库 . 我们将media目录放在public_html目录上(进入该帐户的主目录 - 包含public_html,www等 - 调用“USER”目录) . 将主站点称为“站点A” .

我们将媒体目录放在public_html之上,因为我们不希望用户直接访问媒体 . 我们希望通过各种脚本为他们服务 .

同样在中央存储库中,我们在我们的站点中使用了一堆脚本 .

那么我们有站点B和站点C.这些是不同的cpanel帐户,每个都有自己的USER目录,public_html等,你有希望得到这个想法 .

这些站点访问中央目录中的脚本完全没有任何问题 .

所以现在在站点B上,我们有一个脚本应该强制从站点A的中心目录下载媒体 . 脚本可以看到该文件存在(使用file_exists等) .

但强制下载部分无效 . 这是脚本:

$ctype="application/force-download";
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers 
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=\"".$title."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename)+32);

$handle = fopen($filename, "r");

while ( $contents = fread( $handle, 1024 ) )
{

    $filesize = $filesize - 1024;
    print ($contents);
    flush();

}

fclose($handle); 
exit();

$ filename中的值为:../../ siteA /central / repository / test.pdf(其中central与public_html处于同一级别) . 这是从站点B上的公共目录访问的 - 所以..到站点B上的USER目录,..到包含所有cpanel帐户目录的目录中,然后到达站点A.

这在我的本地WAMP配置上工作正常 .

说实话,虽然我们拥有整个服务器并拥有所有cpanel帐户,但我仍然非常惊讶Site B的所有者可以使用相对路径并访问脚本和网站A上的东西 . 似乎有点不安全,可能服务器配置不正确?

所以无论如何,站点B上的脚本可以看到媒体文件存在 . 媒体文件具有完全读取权限 . 站点B已经可以在与媒体文件相同的目录中访问和运行脚本 . 但是,当我执行时,我得到500错误...

“服务器遇到内部错误或配置错误,无法完成您的请求 . ”

有人有什么想法吗?如果它是一个配置的东西,我可以让主机公司做的东西(不确定究竟是什么) . 但也许这是路径问题或其他问题 . 我今天早上有一个类似的问题与图像,我不得不把这些图像放在站点A的公共目录,以便站点B可以显示它们 . 但是,媒体文件不能在公共目录上,加上 - 如果我没有弄错,因为脚本使用的是fread,print等,这应该可以服务吗?那就像我说的那样在当地工作 .

如果有人能指出我正确的方向,这将是非常好的 .

非常感谢 .