我接手了一个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。
答案 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)
答案 5 :(得分:-1)
如果.h文件“缺少”<?php
指令,那么您可能必须从include切换到类似:
eval( file_get_contents("file.h") );
我个人尽量避免使用eval,但有时候别无选择。