2011-06-20 15 views
8

produjo un error en la escritura '/usr/local/apache2/htdocs/read.php' en la línea 197: Sólo variables deben ser pasados ​​por referencia (línea 196 es $ext = strtolower(array_pop(explode('.',$filename)));)únicas variables se pueden pasar por error de referencia

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

Estoy usando este pequeño script desde http://php.net/manual/en/function.mime-content-type.php, aunque me da un error fatal que parece que no puedo resolver. ¿Alguien que tenga experiencia con esto y arroje algo de luz o me señale en la dirección correcta?

Respuesta

10

Necesitas hacer que el resultado de explotar() una variable antes de pasarlo en

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

@Dendromaniac Si es el mismo problema y esta solución no funciona para usted, por favor crear una nueva pregunta con su código incluido para que la gente pueda echar un vistazo. – JohnP

+0

Cometí un error y estaba editando la copia incorrecta de mime-lib.php my bad. – Dendromaniac

7

Ese código está pasando el resultado de la función explode (un valor) en array_pop, pero array_pop espera una matriz variable de (por referencia), no un valor. (El & en la declaración array_pop nos dice que está esperando para aceptar un reference.)

se puede solucionar mediante el uso de una variable de matriz para almacenar el resultado de explode, y luego pasa eso en array_pop.

Cuestiones relacionadas