CodeIgniter escapeshellarg()

Codeigniter

Seguramente en más de una ocasión subieron su página web al servidor y se encontraron con el siguiente error:

Codeigniter escapeshellarg () ha sido desactivado por razones de seguridad

Esto ocurre ya que por razones de seguridad fue bloqueada la función escapeshellarg en el archivo php.ini, existen 2 soluciones posibles, las cuales son:

Abrir el archivo php.ini y eliminar la función de la lista disable_functions, sin embargo no todos los administradores de servidores permiten dicha modificación.

La segunda opción y es la que nosotros recomendamos es crear su propia función «my_escapeshelarg($datos)«, es una función muy simple que sólo escapa las comillas simples en la cadena y luego agrega comillas simples alrededor.

public function my_escapeshellarg($datos) {

$datos = str_replace('\'', '\\\'', $datos);
return '\''.$datos.'\'';

}

Esperamos sea de su utilidad.

También te podría gustar...

3 Respuestas

  1. Pude resolverlo con otro método más fácil, solo agregas un @ antes del nombre de la función escapeshellarg() para que quede como opcional. La línea de código quedará entonces más o menos así:

    $cmd = ‘file –brief –mime ‘ . @escapeshellarg($file[‘tmp_name’]) . ‘ 2>&1’;

  2. Muy buena solución, solo una duda; ¿El código de la nueva función lo debemos colocar en la misma librería donde está la función original? Y otra cosa; al crear esa nueva función ¿Dónde vamos a llamarla?

    Gracias, saludos.

    • Por lo general depende del uso que le estés dando, yo la cree en el mismo archivo de la original para este ejemplo, pero puedes crearla como una función en cualquier lado y hacer referencia a ella. Vi que encontraste otra solución al mismo problema y te agradezco mucho compartirla con nosotros.

      Saludos