单击时下载/查看文件:Apache目录列表


Download/View files when clicked:Apache directory listings

我有一个用php制作的版本管理系统。

文件通过上传添加到存储库。这些文件存储在web根目录的子文件夹中。(这不是问题,因为它将在受信任用户的本地网络中运行)。我必须添加一个选项来查看"原始代码",或者至少下载它们。我目前的想法是使用标准的apache目录列表来实现它。

问题

存储库肯定会包含HTML和PHP文件。它们被执行而不是被显示

我尝试使用文件权限管理它,但没有成功

另一种可能的解决方案是使用只读文本字段,如果文件太大,会给服务器内存带来巨大负担。而且它不支持图像文件。

Apache目录列表不需要任何代码来显示文件。这就是我选择这种方法的主要原因。无论如何,这里是我提到的文本字段显示。

public function show_file()
   {
     while(!feof($this->_handle))
     {
       $content=fgets($this->_handle)."<br/>";
     }
     echo "<input type=text value=$content readonly>";
   }

我会考虑只使用Javascript作为最后一种选择,因为它对我来说完全陌生

如何应对这种情况?有没有办法将特定目录(及其子目录)从web服务器中排除?

上传文件时更改文件的后缀如何?EG myfile.php变为myfile.php.removeme?如果用户想下载该文件,请将其改回。

我建议使用file_get_contents()。根据文件:

file_get_contents()是将文件内容读入字符串的首选方法。如果操作系统支持,它将使用内存映射技术来提高性能。

对于您的特殊情况,我会做一些类似的事情:

$file = file_get_contents('/path/to/your/file.php');
// If you want to be able to edit the file.
echo '<textarea name="content">' . $file . '</textarea>';
// If you just want to display the content.
echo '<pre>' . htmlentities($file) . '</pre>';