2011-06-20 22 views
8
bir hata hattı 197 senaryo '/usr/local/apache2/htdocs/read.php' oluştu

:sadece değişkenler referans hatası geçirilebilir

(hat 196 $ext = strtolower(array_pop(explode('.',$filename))); olan) sadece değişkenler referans ile iletilmesi gereken Ben anlamaya zorlandığım bir ölümcül hata alıyorum gerçi
if(!function_exists('mime_content_type')) { 

    function mime_content_type($filename) { 

     $mime_types = array(

      'txt' => 'text/plain', 
      'htm' => 'text/html', 
      'html' => 'text/html', //ETC 

     ); 

     $ext = strtolower(array_pop(explode('.',$filename))); 
     if (array_key_exists($ext, $mime_types)) { 
      return $mime_types[$ext]; 
     } 
     elseif (function_exists('finfo_open')) { 
      $finfo = finfo_open(FILEINFO_MIME); 
      $mimetype = finfo_file($finfo, $filename); 
      finfo_close($finfo); 
      return $mimetype; 
     } 
     else { 
      return 'application/octet-stream'; 
     } 
    } 
} 

Ben http://php.net/manual/en/function.mime-content-type.php bu küçük senaryoyu kullanıyorum. Bu konuda tecrübesi olan ve biraz ışık tutan ya da doğru yönde işaret eden kimse var mı?

cevap

10

Sen

$var = explode('.',$filename); 
$ext = strtolower(array_pop($var)); 
+0

@Dendromaniac üzerine geçirmeden önce aynı problem ve bu çözüm sizin için çalışmıyor, ile yeni bir soru oluşturmak lütfen) (a değişkeni patlayabilir sonucunu yapmak gerekir senin Kod dahil, insanlar bir göz atabilir. – JohnP

+0

Bir hata yaptım ve mime-lib.php'nin yanlış kopyasını düzenledim. – Dendromaniac

7
kod array_pop içine explode fonksiyonu (bir değer) sonucunu geçerken bu

ancak array_pop bir dizi değişken (referans olarak), bir değer öngörmektedir.

Sen array_pop içine geçen ardından explode sonucunu depolamak için bir dizi değişkeni kullanarak ve bunu düzeltebilirsiniz (& yılında array_pop deklarasyon o reference. Kabul etmek bekliyor söyler).

İlgili konular