3

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

4

6 回答 6

6

问题可能是您包含的 .h 文件只是在没有打开“ <?php”标记的情况下开始进入 php 代码吗?

包含文档:

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

于 2009-04-04T23:08:02.383 回答
2

PHP 是一种解释性语言,因此您不能在不执行文件的情况下“包含”文件。请记住,'.h' 只是一个文件扩展名,因此尽管之前的编码人员可能将 PHP 放在了一个 '.h' 文件中,但它仍然只是 PHP。

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

于 2009-04-04T22:40:41.543 回答
1

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

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


编辑

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

于 2009-04-04T22:41:59.670 回答
1

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

于 2009-04-04T22:46:18.800 回答
0

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

于 2009-04-04T23:01:27.313 回答
-1

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

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

就我个人而言,我尽量避免 eval ,但有时别无选择。

于 2009-04-05T18:01:29.990 回答