1

に Drupal をインストールしました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バージョンが使用されている可能性がありますか?

Drupal6コアは引き続きPHP4と互換性があると想定されていますが、PHP 4は保守されておらず、2008年8月以降セキュリティ修正が行われていないため、多くのモジュールは互換性がありません。したがって、本番サイトで使用することは、セキュリティ上大きな問題ではありません。

したがって、これを「修正」することに時間を費やす前に、すぐにPHP5に切り替えることをお勧めします。

おそらくあなたの問題とは無関係ですが、$base_url変数を設定している行のコメントを読みましたか?末尾のスラッシュが実際のURLにもある場合は、末尾のスラッシュを削除する必要があります。


編集:問題のあるファイルから「Typogrify」クラスをチェックしました。静的メソッド(関数)のコレクションにすぎないようです。したがって、それが問題を引き起こす唯一のファイルである場合は、厳密には必要ではないため、そこにあるすべての「public」宣言を削除することでこれを回避できる可能性があります。

これはお勧めしません。非推奨の、メンテナンスされていないPHPバージョンで本番サイトを実行しないでください!)

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

末尾のスラッシュはありません! ;)

于 2009-11-15T21:48:32.943 に答える