PHP解析错误; Drupal6部署

时间:2009-11-15 20:00:39

标签: php deployment drupal drupal-6 syntax-error

我在www.example.com/test安装了Drupal。现在,它已准备好上线,我正试图将其移至www.example.com。我将sites/default/settings.php中的行更改为:

$base_url = 'http://www.example.com/';  // NO trailing slash! 

当我导航到我的index.php时,我得到各种解析错误,如下所示:

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' 
in /home/example/public_html/sites/all/modules/typogrify/typogrify.class.php 
on line 18

问题在于:

  public static function amp($text) {
    $amp_finder = "/(\s| )(&|&|&\#38;|&)(\s| )/";
    return preg_replace($amp_finder, '\\1<span class="amp">&amp;</span>\\3', $text);
  }

这样的每个功能都会导致错误。然后PHP不再理解在子目录中完全正常的语法吗?

2 个答案:

答案 0 :(得分:3)

IIRC,这是在PHP 4中尝试使用可见性声明(私有/受保护/公共)时出现的错误。您的实时环境是否使用与测试环境不同的PHP版本?

虽然Drupal 6核心应该仍然与PHP 4兼容,但许多模块都没有,因为 PHP 4不再维护,并且自2008年8月以来没有得到任何安全修复。因此,将它用于生产现场是一个很大的安全问题。

所以在投入任何时间进行“修复”之前,我建议立即切换到PHP 5.

可能与您的问题无关,但您是否在设置$base_url变量的行上阅读了评论?您应该删除尾部斜杠,以防您使用真实URL进行删除。


修改:刚刚从违规文件中检查了“Typogrify”类。它似乎只是静态方法(函数)的集合。因此,如果这是唯一一个给您带来问题的文件,您可以通过删除其中的所有“公共”声明来解决这个问题,因为它们并非绝对必要。

请注意,我不建议这样做 - 您不应该使用已弃用的,未维护的PHP版本运行生产站点!)

答案 1 :(得分:3)

$base_url = 'http://www.example.com/';  // NO trailing slash!

没有尾随斜线! ;)