2008-11-24 232 views
2

所有php include文件都必须位于包含目录中,还是仅仅是组织的便利? 我可以使用该目录的路径包含来自任何目录的文件吗? 包含php的html文件包含必须有一个php扩展名吗? 如果是这样,我想这将意味着我所有的HTML文档都将是PHP,如果他们都有我打算“包括”的菜单。这是可接受的协议,让您的网站上的每个文件都是一个PHP文件?php包含在html文件目录中

鞠躬谦卑崇敬...

p.s.这个主题有没有好的圣经!?

回答

7

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

呼叫包括(“/路径/到/你/文件/与/任何/ extension.extension” );应该包括它作为一个PHP文件

通常更安全的调用PHP代码与PHP扩展寿的文件。

1

如果您将PHP放入.html文件并包含()它,它应该可以工作。但是,如果有人直接从服务器请求.html文件,他们可以看到所有未处理的PHP代码,这是危险的。因此,如果您正在执行此操作,请将这些文件放在非Web可访问的目录中(例如在文档根目录之上)或更改您的Web服务器配置,以便将.html文件视为PHP。

你应该能够包括()的任何文件,但你可能会访问一些目录的问题,如果有在PHP中的open_basedir限制(你可能会在大多数主机商找到)

1

您可以从任何地方包括文件在服务器上(当然取决于文件访问权限和安全限制)。

使用includes目录有助于保持组织良好,但不是必需的。

如果一个文件包含PHP代码,它应该保存为一个.php文件 - 否则如果直接调用代码将不会运行。这给你一个文件的行为有所不同,取决于它如何被访问,这可能不是你想要的,可能是一个安全威胁。

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

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脚本),否则它不会运行。