2010-08-02 109 views
4

有关所需/包含在PHP文件,是它更好地使用.inc扩展VS .inc.php VS .php扩展?PHP包含文件扩展名?

+0

我想知道处理/加载方面 - inc文件的处理方式不同吗? – ina 2010-08-02 20:19:27

+1

没有区别。 – jmz 2010-08-02 23:01:42

回答

15

有时候人们使用.inc扩展名,然后做一些服务器配置,以保持.inc文件不被通过网络浏览器访问。这可能是好的,如果做绝对正确的知识渊博的系统管理员,但有一个更好的办法:那不是应该由网络用户访问应保持你的文档根目录之外的任何文件。一旦这些文件脱离网络,可以说,你可以使用任何你想要的扩展名。 .php绝对是语法突出显示,普遍理智等的明智选择。

+0

+1,用于防止配置错误的服务器。 – cbednarski 2010-08-02 20:01:10

+0

将.inc文件放在'public_html'上面的目录中怎么办? – ina 2010-08-02 20:28:31

+0

没问题,如果你想这样做。但是,使用'.inc'扩展名没有很好的理由破坏了自然文件关联。 (没有性能优势,正如你上面的评论所要求的那样。) – grossvogel 2010-08-02 20:33:53

1

Apache可以有时(由于错误或严重的崩溃)担任.php文件为文本(happend给我几次在共享主机)......我想,只要你可以使用任何你想要的扩展,你不要不要将您的文件存储在公用文件夹中。

比方说,你的网站是在/ home /用户/的public_html/

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

有文件:



(1)。与

class one { 
//... 
} 



01 ../lib_php/one.class.php(2).../lib_php/two.function.php与

function two() { 
//... 
} 

,你必须在/的public_html

 
<?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');

这样,你是主要的index.php采取一切预防措施的文件是不能直接到达,但可以通过你的脚本中使用...

+0

我通常将函数放在静态类中并使用__autoload()函数。这样我就不必费心使用includes了,速度损失与通过不必记住包含路径(或发现错别字)而节省的时间相比较小。 – 2010-08-04 18:35:57

1

我个人的偏好是在文档根什么是PHP文件,以表明它直接发由Web服务器,以及任何这是一个图书馆xecutable是存储在一个平行目录中的文件。公司,以表明它不是直接执行。

我的标准配置是

/home/sites/example.com/html/ - 任何这里是“安全”的揭露,如果PHP失败,并且提供了原代码

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

因为你可以将Apache配置为拒绝访问.inc文件并将其放在根目录里面,然后你根据Apache来保证你的安全。如果PHP可能在Apache内发生故障并暴露您的代码,那么.inc块也可能会失败并公开您的代码的内部。

当然,如果Apache的咳嗽遍布整个地板,那么没有理由认为目录遍历保护不会失败,并让别人去做http://example.com/../inc/seekritpasswords.txt

在某些情况下,您只需接受如果某件事存储在Web服务器上的任何位置,就有可能出现故障可能允许访问原始数据并公开所有信息。你想花费多少时间和精力来防止这种情况取决于你。