PHP包含文件扩展名?

时间:2010-08-02 19:51:15

标签: php include require file-extension

对于PHP中的必需/包含文件,使用.inc扩展程序与.inc.php vs .php扩展程序相比,是否更好?

3 个答案:

答案 0 :(得分:15)

有时人们使用.inc扩展名然后进行一些服务器配置,以防止通过Web浏览器访问.inc个文件。这个可能很好,如果由知识渊博的系统管理员完全正确完成,但有更好的方法:任何不应被Web用户访问的文件都应保存在文档根目录之外。一旦这些文件离开网络,可以说,你可以使用你想要的任何扩展名。 .php绝对是语法突出显示,一般理智等的明智选择。

答案 1 :(得分:1)

Apache有时(由于错误或严重崩溃)将.php文件作为文本提供(在共享主机上发生了几次)....我认为你可以使用你想要的任何扩展名,只要你不要t将您的文件存储在公共文件夹中。

假设您的网站位于/ home / user / public_html /

创建另一个文件夹/ home / user / lib_php /

 有文件:



(1)... / lib_php / one.class.php with

class one { 
//...
}



(2)... / lib_php / two.function.php with

function two() { 
//...
}

你有/ public_html中的主要index.php

<?php 
include_once('../lib_php/one.class.php');
include_once('../lib_php/two.function.php');

$x=a; $b=two($x); $c=new one; //etc..

 
<?php
require_once('/home/user/lib_php/the.file.php'); 

通过这种方式,您可以采取一切预防措施,直接无法访问文件,但脚本可以使用这些文件......

答案 2 :(得分:1)

我个人的偏好是文档根目录中的任何内容都是.php文件,表明它可以直接由Web服务器执行,而任何库都是存储在并行目录中的.inc文件,以表明它不是直接的可执行文件。

我的标准配置是

/home/sites/example.com/html/ - 如果PHP失败并提供原始代码,这里的任何内容都是“安全的”

/home/sites/example.com/inc/ - 库,带密码的配置文件(例如带有DB凭据的数据库连接类)等。任何不应该公开的东西,因为没有理由。

虽然你当然可以配置Apache来拒绝访问.inc文件并将它们保存在webroot中,但你依靠Apache来保证你的安全。如果PHP在Apache中失败并暴露您的代码,那么.inc块也可能失败并暴露您的代码内部。

当然,如果阿帕奇在全场咳血,那么目录遍历保护也不会失败,让某人做http://example.com/../inc/seekritpasswords.txt

在某些时候,您必须接受如果某些内容存储在Web服务器上的任何位置,则可能存在失败可能允许访问原始数据并公开所有内容。您希望花费多少时间和精力来防范这一点取决于您。

相关问题