我有一个用php制作的版本管理系统。
文件通过上传添加到存储库。文件存储在web root的子文件夹中。(这不是问题,因为它要在受信任的用户之间的本地网络中运行)。我必须添加一个选项查看“原始代码”或至少下载它们。我目前的想法是使用标准的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服务器中排除特定目录(及其子目录)?
答案 0 :(得分:0)
如果在上传时更改文件的后缀怎么样? EG myfile.php成为myfile.php.removeme?如果此人想要下载文件,请将其更改回来。
答案 1 :(得分:0)
我建议改用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>';