1

我在www.example.com/test. 现在,它已准备好上线,我正在尝试将其移至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 是否不再理解以前在子目录中运行良好的语法?

4

2 回答 2

3

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

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

因此,在投入任何时间“修复”此问题之前,我建议立即切换到 PHP 5。

可能与您的问题无关,但是您是否阅读了设置$base_url变量行的注释?您应该删除尾部斜杠,以防您的真实 URL 也有它。


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

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

于 2009-11-15T21:38:03.157 回答
3
$base_url = 'http://www.example.com/';  // NO trailing slash!

没有尾部斜线!;)

于 2009-11-15T21:48:32.943 回答