2

有人可以给我一个关于这里可能有什么问题的指针:

文件 f1.php:

<?php

include('f2.php');

文件 f2:

<?php
echo "HERE";

报错:

`Parse error: syntax error, unexpected '=' in f1.php on line 4`
  • 在 nginx 1.2.6 上使用 php-fpm 5.4。
  • 文件没有 BOM 标记。
  • 服务器没有硬件问题。

这可能是配置问题,但我似乎无法弄清楚。

几分钟前我问过这个问题,但由于我引用项目中的情况而不是特定情况而立即关闭(https://stackoverflow.com/questions/14651673/strange-php-syntax -错误问题

更新:显然与 nginx 无关......如果在 cli 中执行同样的错误

4

2 回答 2

2

看来我已经解决了...

短篇小说:
--enable-zend-multibyte.

长话短说:
我尝试了所有可以想象的事情……逐字节检查源文件,没有发现任何问题。我已经尝试在 php 中获取文件内容并从 insidde php 中回显字节数组,在这种情况下,也没有发现任何问题。
我尝试使用调试符号重新编译 php,但该过程以 0377 结束,而 gdb 没有提供任何有用的东西。

无论我做了什么,在点击包含语句(或它的变体)后,我在包含文件的最后一行出现语法错误。

我希望这些文件具有 BOM(正如我问过的几乎每个人所建议的那样)。所以我认为它必须与 php 的运行方式有关,并尝试更改环境变量(如 LC_* vars)但再次没有结果。

所以我最后我有一个 add-configure-option-and-recompile-php 会话...不确定为什么所有脚本都不包含多字节字符并且如前所述没有 BOM 标记,但是在重新编译 PHP 之后--enable-zend-multibyte,代码开始按预期工作。

感谢大家的建议。

于 2013-02-03T00:22:58.453 回答
0

如果您使用 APC,您可能没有更新之前的字节码。

尝试apc_clear_cache();

于 2013-02-01T18:15:44.883 回答