2009-11-15 55 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