PHP Ayrıştırma Hatası;

2 Cevap php

I www.example.com/test bir Drupal kurulum vardı. Şimdi, canlı gitmeye hazır, ve ben www.example.com taşımak için çalışıyorum. I sites/default/settings.php için çizgi değişti:

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

Benim index.php gidin, ben böyle, ayrıştırma hataları her türlü olsun:

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

Sorun şudur:

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

Bu gibi her fonksiyon hataları neden oluyor. Daha sonra PHP artık bir alt önce mükemmel iyi çalıştı bu sözdizimini anlamak nedir?

2 Cevap

IIRC, bu hata biridir PHP 4 görünürlük bildirimlerinde (Özel / korumalı / public) kullanmaya çalışırken. Could it be that your live environment uses a different PHP version than your testing environment? var

Drupal 6 çekirdekli hala PHP 4 ile uyumlu olması gerekiyordu iken gibi PHP 4 is not maintained anymore and does not get any security fixes since August 2008, birçok modülleri, değil. Bir üretim yeri için kullanarak bu nedenle akıllıca büyük bir HAYIR güvenlik.

So before investing any time in 'fixing' this, I'd recommend switching to PHP 5 immediately.

Muhtemelen soruna ilgisiz, ama $base_url değişkeni ayarı hattı üzerinde yorum okudun? Siz durumda da gerçek URL ile orada var, bölü kaldırmanız gerekir.


Edit: Sadece kusurlu dosyasından 'Typogrify' sınıfı kontrol etti. Statik yöntemler (fonksiyonlar) sadece bir koleksiyon gibi görünüyor. Bu size problem veren tek dosya Yani, onlar kesinlikle gerekli değil gibi, orada tüm 'kamu' beyanlarını kaldırarak bu sorunu gidermek mümkün olabilir.

Note that I do not recommend this - Bir kalktı, Durmuş PHP sürümü ile bir üretim sitesi çalıştırmak) olmamalı!

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

NO sondaki çizgi! ;)