2009-11-15 50 views
1

我有一个Drupal安装在www.example.com/test。现在,它已准备好上线了,我正试图将其移至www.example.com。我改了行中sites/default/settings.php到:PHP解析错误; Drupal6部署

$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

你使用什么PHP版本? – Gumbo 2009-11-15 20:35:51

+0

PHP版本4.4.9 – 2009-11-15 21:02:57

+1

那么,那就是你的问题。 – troelskn 2009-11-15 22:30:14

回答

3

IIRC,这是在PHP 4中尝试使用可见性声明(private/protected/public)时得到的错误。您的实时环境是否使用与您的测试环境不同的PHP版本?

虽然Drupal的6个核心被认为仍然是用PHP 4兼容,很多模块都没有,因为PHP 4,不再被维护,并自2008年8月没有得到任何的安全修补程序。因此,将它用于生产站点是一种很不安全的明智做法。

因此,在投入任何时间'修复'这个之前,我建议立即切换到PHP 5。

可能与您的问题无关,但您是否阅读了关于设置$base_url变量行的评论?你应该删除最后一个斜杠,以防你的真实URL存在。


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

请注意,我不建议这样做 - !你不应该运行生产现场带过时,没有维护的PHP版本)

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

没有尾随斜线! ;)

+0

WOW。对我好。 – 2009-11-15 22:45:46