【问题标题】:Video file (.mp4|.mkv) unable to load from outside server rootDIr视频文件 (.mp4|.mkv) 无法从外部服务器 rootDIr 加载
【发布时间】:2021-08-24 12:21:38
【问题描述】:

让我们直奔主题。

我将我的旧 VHS/DVD 内容放在我的硬盘上。它位于/mnt/d/Movies,我正在使用 Windows 并拥有 WSL(windows 子系统 linux)。 WSL 是托管网络服务器的地方,因为我想通过我的 LAN 将所有这些电影提供给任何想要观看它们的人(仅限 LAN)。制作了一个动态页面来选择电影并加载它。

movieDir Location: /mnt/d/Movies/Speed.2.Cruise.Control-1997/Speed.2.Cruise.Control-1997.mkv

当我尝试以下操作时

$lanSite->movieDir = 'https://localhost/mnt/d/Movies/'

<video>
  <source  style="height:600px; width:480px;" src="<?= $lanSite->movieDir . DIRECTORY_SEPARATOR . $movieName . "-" . $movieYear . $movieFile; ?>" type="video/mp4">
</video>

注意:视频文件被编码为 mkv / mp4 取决于哪个最适合存储目的。

使用的网址:/mnt/d/Movies/Speed 2 Cruise Control-1997/Speed.2.Cruise.Control-1997.mkv 试过上面似乎没有加载任何东西。当我尝试检查 Dir 和 File 是否存在时,它们似乎存在但未在 localhost 页面中加载。

然后我尝试使用 apache .htaccess 重定向 /mnt/d/Movies 文件夹 .htaccess:RewriteRule ^movie-file/(.*)$ movie_details.php?movie=$1

上述方法不起作用,实际上我认为我以不同的方法最终在同一个地方。

然后我意识到它在 rootDir 之外,做了一些谷歌搜索。最终结果是由于目录混淆而重置了我的 WSL。

任何人都可能知道可能是什么问题,如果我在服务器中加载文件没问题,虽然服务器有 512GB 存储空间并且我迄今为止编码的电影为 650GB,但从驱动器本身外部使用它们是我的唯一的选择。

我尝试过的随机组合:

https://localhost/mnt/d/Movies/Speed 2 Cruise Control-1997/Speed.2.Cruise.Control-1997.mkv
../../mnt/d/Movies/Speed 2 Cruise Control-1997/Speed.2.Cruise.Control-1997.mkv
//mnt/d/Movies/Speed 2 Cruise Control-1997/Speed.2.Cruise.Control-1997.mkv
D:\Movies\Speed 2 Cruise Control-1997\Speed.2.Cruise.Control-1997.mkv
file:///D:\Movies\Speed 2 Cruise Control-1997\Speed.2.Cruise.Control-1997.mkv

我尝试过的所有组合都失败了。 是的,我已经尝试过 .mp4 并且它具有相同的结果 --> 找到文件夹 --> 找到文件 --> 无法看到播放器或播放

【问题讨论】:

  • 首先,您需要具备访问本地硬盘的能力。该链接解释了你是如何做到的。接下来(最有可能)您会遇到防火墙、读取权限错误。 HTML 文件“不可能”简单地访问外部硬盘驱动器。这就是为什么您首先拥有网络服务器的全部原因。
  • 为什么您认为可以通过网络服务器访问文档根目录之外的文件?这也将允许下载您的私人文件,例如私钥。将文件移动到您的文档根目录中。
  • 您可以访问您的驱动器,但不能访问在其他设备上运行的 HTML 文件本身。如果允许 HTML 文件(选择上传文件的例外情况非常有限)访问外部驱动器,那么这将导致最大的安全问题。因此,除非驱动器将成为网络服务器本身的一部分,否则假定这是不可能的。
  • 您可以让您的网络服务器遵循符号链接,并将您安装的驱动器符号链接到文档根目录。在您喜欢的搜索引擎上搜索“follow symlinks ”。

标签: html


【解决方案1】:

“你可以让你的网络服务器跟随符号链接,然后简单地将你挂载的驱动器符号链接到文档根目录。在你最喜欢的搜索引擎上搜索“跟随符号链接”-@DanielW。

解决方案

在根网络服务器目录中创建了一个电影文件夹。

mkdir /var/www/html/movies/

然后我使用mount for Linux 作为我使用 WSL 的我

mount --bind --verbose /mnt/d/Movies /var/www/html/movies

注意:这将起作用,尽管您可能需要创建一个脚本以便可以在启动时挂载它

相当简单地搜索了“跟随符号链接&lt;yourwebserver&gt;&lt;operatingsystem&gt;”并在几个链接中找到了解决方案

访问 https://localhost/movies/movieFolder/fileName.mp4 时 它现在从 /mnt/d/Movies 加载,而不是在 Movies 文件夹中包含 web rootDir。

感谢@DanielW。 @tachoshy 为您提供帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多