首页 > 解决方案 > 如何将 PHP 中 Web 根目录外的文件中的视频提供给 html5 视频源

问题描述

我目前index.php在我的 web 根文件夹中有一个文件,/var/www/html/它应该在 web 根目录之外的目录中加载图像和视频。

图像和视频文件位于 Web 根文件夹之外,如下所示: /var/www/media/image.jpg/var/www/media/movie.mp4.

为了访问图像文件,我在 web 根文件夹中创建了一个 php 文件serve_image.php,其内容如下:

<?php
  header('Content-Type: image/jpg');
  readfile("../media/image.jpg");
?>

然后,在 index.php 中,我将此图像加载到一个<img>元素中,如下所示:

<html>
  <body>
    <img width="320" height="240" src="serve_image.php"/>
  </body>
</html>

并且图像正确显示。

如果我尝试对 mp4 文件做同样的事情,它不会显示视频。我在 web 根文件夹中创建了一个 php 文件,serve_movie.php其中包含以下内容:

<?php
  header('Content-Type: video/mp4');
  readfile("../media/movie.mp4");
?>

然后,在 index.php 中,我加载尝试将这部电影加载到<source>元素内的<video>元素中,如下所示:

<html>
  <body>
    <video width="320" height="240" controls autoplay>
      <source src="serve_movie.php" type="video/mp4"/>
    </video>
  </body>
</html>

但是,没有显示视频。

我需要做什么才能正确加载视频?

标签: phphtmlvideo

解决方案


您的代码看起来是正确的,当我刚刚测试了一个非常相似的脚本时,它运行良好。

几个想法:

  • 您是否尝试过直接在浏览器中访问您的视频脚本 (serve_movie.php) 以查看是否获得了视频?
  • 您是否打开了错误报告并设置为显示错误?如果是这样,你得到了吗?我想知道阅读视频内容是否会由于其大小而耗尽 PHP 的内存限制。

要启用错误报告,请在任何其他代码之前将以下内容添加到您的视频脚本 (serve_movie.php):

error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('html_errors', true);

推荐阅读