在PHP中包含不同类型的文件

时间:2009-04-04 22:31:10

标签: php include apache2

我接手了一个PHP项目,我试图让它在我的开发盒上运行。我是开发人员而不是系统管理员,所以我无法让它工作。

之前的开发人员使用.h文件来包含PHP。我当前的配置是使用该.h文件并包含它而不执行它。我需要在apache配置中查找什么(或者是我的php.ini)?

编辑:

当我阅读下面的评论之一时点击了某些内容。代码使用ASP样式标记“<?”。我已经在php.ini中打开了选项,并且根据phpinfo(),它已启用,但是apache仍然只是将代码包含为文本。

我刚检查过它并使用完整的开放PHP标记“<?php”运行代码修复了问题。话虽如此,我仍然希望它以另一种方式工作。

我正在使用最新版本的Macbook上运行代码。 PHP 5.2.6,postgresql 8.3和apache 2.

代码适用于登台服务器,但我无法弄清楚它有什么不同。

修改

Durrr ...我没有在php.ini中启用short_open_tags。

6 个答案:

答案 0 :(得分:6)

问题是你所包含的.h文件只是在没有打开“<?php”标签的情况下启动到PHP代码?

来自include文档:

  

当包含文件时,解析将退出PHP模式并在目标文件的开头进入HTML模式,并在结束时再次恢复。因此,目标文件中应作为PHP代码执行的任何代码都必须包含在valid PHP start and end tags中。

答案 1 :(得分:2)

PHP是一种解释型语言,因此您无法在不执行文件的情况下“包含”该文件。请记住'.h'只是一个文件扩展名,所以虽然之前的编码器可能已经将PHP放在'.h'文件中,但它仍然只是PHP。

有关您遇到的问题的详细信息会有所帮助。

答案 2 :(得分:1)

您可以使用.htaccess文件并添加:

php_value auto_prepend_file /path/to/include-file.h


修改

我刚才读到.htaccess仅适用于php的模块版本。

答案 3 :(得分:1)

您应该将它们全部更改为.php扩展名。但是,如果您要将它们保留为.h,则可以更改Apache中的映射。它是Apache通过正确的解释器运行文件,而不是PHP。 PHP引擎将处理传递给它的任何内容。

答案 4 :(得分:0)

includerequire将执行包含的文件。如果您使用readfile,它只是回显文件而不将其视为PHP代码。

答案 5 :(得分:-1)

如果.h文件“缺少”<?php指令,那么您可能必须从include切换到类似:

eval( file_get_contents("file.h") );

我个人尽量避免使用eval,但有时候别无选择。