好的,我们有一台运行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等,这应该可以服务吗?那就像我说的那样在当地发挥作用。
如果有人能指出我正确的方向,这将是非常好的。
非常感谢。