日期:2014-05-17  浏览次数:20562 次

文档树以及PHP扩展名问题
在《PHP和MySQL Web开发》一书中,看到这样一段文字,表示不太理解,希望高手能够解答一下
  PHP并不会查看所需文件扩展名。这就意味着,只要不想直接调用这个文件,就可以任意命名该文件。当使用require()语句载入文件时,它会作为PHP文件的一部分被执行。
  通常,如果PHP语句放在一个HTML文件(例如,名为page.html)中时,它们是不会被处理的。PHP通常用来解析扩展名被定义成如.php的文件。(在Web服务器配置文件中可能是这样)但是,如果通过require()语句载入这个page.html,文件内的任何PHP命令都会被处理,因此,可以使用任何扩展名来命名包含文件,但要尽量遵循一个约定,例如将扩展名命名为.inc是一个很好的办法。
  需要注意的一个问题是,如果扩展名为.inc或一些其他的非标准扩展名的文件保存在Web文档树中,而且用户可以在浏览器中直接载入它们,用户将可以以普通文本的形式查看源代码,包括任何密码,因此,将被包含文件保存在文档树之外,或使用标准的文件扩展名是非常重要的。

  这段文字当中提到,将扩展名命名为.inc是很好的办法,这个是为什么呢? 其次,当中提到的文档树又是什么?最后,如何将包含文件保存在文档树之外

------解决方案--------------------
就是把被包含的php文件防在网站文档目录外, 且保证apache的运行用户有权访问该目录。

比如apache默认目录设置在/var/htdoc下,那么你可以把被包含php文件命名为.inc后缀,然后放在/var目录下,这样浏览器就没法访问到/var之下的文件了。