2011-06-20 66 views
8

在腳本「/usr/local/apache2/htdocs/read.php」發生錯誤上線197:只有變量應該通過引用傳遞(線196是$ext = strtolower(array_pop(explode('.',$filename)));只有變量可以通過參考錯誤傳遞

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'; 
     } 
    } 
} 

我使用http://php.net/manual/en/function.mime-content-type.php這個小腳本,雖然我得到一個致命的錯誤,我似乎無法弄清楚。有沒有人有這方面的經驗,並擺脫了一些光線或指向正確的方向?

回答

10

你需要讓爆炸的結果()一個變量,你通過它

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

@Dendromaniac之前,如果是同樣的問題,這個解決方案是不爲你工作,請創建一個新的問題你代碼包括在內,以便人們可以看一看。 – JohnP

+0

我犯了一個錯誤,正在編輯mime-lib.php的錯誤副本。 – Dendromaniac

7

該代碼被傳遞explode函數(的值)的結果爲array_pop,但array_pop預計陣列可變(由參考),而不是一個值。 (該&array_pop聲明告訴我們,它的期待接受reference。)

您可以通過使用一個數組變量的結果存儲explode,然後傳遞到這array_pop修復它。

相關問題