2

是否所有 php 包含文件都必须位于包含目录中,或者这只是一种组织便利?我可以使用该目录的路径包含来自任何目录的文件吗?包含 php 包含的 html 文件是否必须具有 php 扩展名?如果是这样,我想这意味着我所有的 html 文档都将是 php,如果它们都有我计划“包含”的菜单。让您网站上的每个文件都是 php 文件的可接受协议吗?

谦恭地鞠躬……

ps 有没有关于这个话题的好圣经!?

4

4 回答 4

7

你不需要让你的 php 包含任何特定的地方,或者有任何文件扩展名......

调用 include('/path/to/your/file/with/any/extension.extension'); 应将其作为 php 文件包含在内

通常使用带有 php 扩展名的 php 代码调用文件会更安全。

于 2008-11-24T16:16:30.583 回答
1

如果您将 PHP 放在 .html 文件中并包含()它,它应该可以工作。但是,如果有人直接从服务器请求 .html 文件,他们可能会看到所有未处理的 PHP 代码,这很危险。因此,如果您这样做,那么要么将这些文件放在一个不可通过 Web 访问的目录中(例如,在文档根目录之上),要么更改您的 Web 服务器配置,以便将 .html 文件视为 PHP。

您应该能够包含()任何文件,但如果 PHP 中存在 open_basedir 限制(您可能会在大多数网络主机上找到),您可能会遇到访问某些目录的问题

于 2008-11-24T16:27:41.887 回答
1

您可以包含来自服务器上任何位置的文件(当然取决于文件访问权限和安全限制)。

使用包含目录有助于保持井井有条,但不是必需的。

如果文件包含 PHP 代码,则应将其保存为 .php 文件 - 否则如果直接调用该文件,则代码将无法运行。这会给您留下一个行为不同的文件,具体取决于它的访问方式,这可能不是您想要的,并且可能是安全威胁。

为了解决这个问题,我看到有些人覆盖文件类型,因此服务器将所有 .html 文件视为 PHP 脚本 - 我不推荐这样做,因为它会减慢所有文件的处理速度,即使它们不包含任何 PHP。遵循最小意外原则 - 让您的 HTML 文件为 .html,您的 PHP 文件为 .php - 每个人都会更快乐。

于 2008-11-24T18:41:09.387 回答
0

詹姆斯·马瑟:

我认为您现在指的是 Apache SSI(请参阅http://httpd.apache.org/docs/2.2/howto/ssi.html#standard-footer

不知道答案,我试过了,这是我的结果

Extension  Call method        PHP runs
 .html      browser            no
 .html      Apache #include    no
 .html      PHP include()      yes
 .php       browser            yes
 .php       Apache #include    yes
 .php       PHP include()      yes

(使用 WinXP、Apache 2.2.3、PHP 5.2.26 和 CentOS 5.2、Apache 2.2.3、PHP 5.1.16 进行测试)

所以你的答案是肯定的——如果你想通过 Apache SSI #include 调用 PHP 脚本,脚本必须有一个 .php 扩展名(或其他一些扩展名,即 .php4 .php5 等,它在 Apache 中注册为PHP 脚本),否则它不会运行。

于 2008-11-25T20:40:59.360 回答