对于PHP中的必需/包含文件,使用.inc
扩展程序与.inc.php
vs .php
扩展程序相比,是否更好?
答案 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服务器上的任何位置,则可能存在失败可能允许访问原始数据并公开所有内容。您希望花费多少时间和精力来防范这一点取决于您。