对于 PHP 中必需/包含的文件,使用.inc
扩展与.inc.php
扩展是否更好.php
?
3 回答
有时人们会使用.inc
扩展程序,然后进行一些服务器配置,以防止.inc
通过 Web 浏览器访问文件。如果知识渊博的系统管理员绝对正确地完成,这可能会很好,但有一个更好的方法:任何不应该被 Web 用户访问的文件都应该保存在您的文档根目录之外。一旦这些文件离开网络,可以说,你可以使用任何你想要的扩展名。.php
绝对是语法突出显示,一般理智等的明智选择。
Apache 有时(由于错误或严重崩溃)可以将 .php 文件作为文本提供(在共享主机上发生过几次)....我认为您可以使用任何您想要的扩展名,只要您不存储您的公用文件夹中的文件。
假设您的网站在 /home/user/public_html/
创建另一个文件夹 /home/user/lib_php/
有文件:
(1) .../lib_php/one.class.php 与
class one {
//...
}
(2) .../lib_php/two.function.php 与
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');
这样,您将采取一切预防措施,文件无法直接访问,但您的脚本可以使用...
我个人的偏好是,文档根目录中的任何内容都是 .php 文件,表明它可以由 Web 服务器直接执行,而任何属于库的内容都是存储在并行目录中的 .inc 文件,表明它不能直接执行。
我的标准配置是
/home/sites/example.com/html/
- 如果 PHP 失败并提供原始代码,这里的任何内容都是“安全”的
/home/sites/example.com/inc/
- 库、带有密码的配置文件(例如带有数据库凭据的数据库连接类)等。任何不应该公开的东西,因为没有理由这样做。
虽然您当然可以将 Apache 配置为拒绝访问 .inc 文件并将它们保存在 webroot 中,但您仍然依赖 Apache 来确保您的安全。如果 PHP 可能在 Apache 中失败并暴露您的代码,那么 .inc 块也可能会失败并暴露您的代码的内部结构。
当然,如果 Apache 咳得满地都是,目录遍历保护也没有理由不失败,让别人去做http://example.com/../inc/seekritpasswords.txt。
在某些时候,您只需要接受如果某些内容存储在 Web 服务器上的任何位置,则可能会出现故障,从而允许访问原始数据并暴露所有内容。您想花费多少时间和精力来防止这种情况取决于您。