通过PHP文件以root身份使用子目录

时间:2017-01-03 12:58:45

标签: php

我有一个文件index.php和一个目录app。每当我从变量访问app时,我都想加载index.php目录的内容。

例如:

网址:index.php?url = app / main.php

index.php代码

<?php 
     require "system/index.php";
     $url = $_GET["url"];
     load_file($url); 
?>

在这里,我希望从main.php目录加载app并使用我尚未创建的load_file函数。主要目的是在运行app/main.php之前加载一些文件[line:2]。

以下是我实施load_file功能

的方法
<?php
    load_file($url) {
        require $url;
    }

问题

要求实际加载文件中的所有内容并打印出来。这是必需的,也不是某些文件所必需的。每当我需要一些文件时,它的标题就会搞砸了。这意味着,如果网址为index.php?url=app/video.mp4,则会显示视频的文字/代码,而不是播放视频。 JavaScript和CSS文件也是如此。他们确实加载了代码,但问题是所有文件无论CSS / JavaScript / ZIP / Image / Video都被解释为HTML文档。我想要的只是用各自的标题加载每个文件。

感谢您阅读,如果可以,请尽力帮助。

2 个答案:

答案 0 :(得分:0)

有许多方法可以做到这一点。如果你想要单行,你可以尝试readfile()

  

readfile - 输出文件

     

描述

     

int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

     

读取文件并将其写入输出缓冲区。

请确保您不会在脚本中打印任何其他内容。

请注意,您仍然需要发送正确的Content-Type标头 - 该功能称为header()

答案 1 :(得分:0)

这不能解决问题而是引入一个新问题

编辑1

mime_content_type()不会为标头返回正确的/或必需的MIME类型。

我找到了解决问题的方法。我必须基本上检测文件的MIME类型并将其作为标头发送。感谢答案和评论。我搜索了谷歌,并且存在一个函数mime_content_type()来识别mime类型。

<?php 
     function load_file($file){
         if(file_exists($file)) {
             header("Content-Type:" . mime_content_type($file));
             readfile($file); // Refer to http://stackoverflow.com/questions/41444074
         }else{
             throw new Exception("File you are trying to find does not exist (/anymore).");
         }
     }