繁体   English   中英

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

[英]Including different types of files in PHP

我接手了一个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。

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

来自包含文档:

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

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

关于您遇到的问题的更多细节将会有所帮助。

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

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


编辑

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM