CodeIgniter 2.x y PHP 5.6.0

Como advertí en mi anterior post, doy la solución para el molesto problema de la actualización a PHP 5.6, que hacía inusable completamente las aplicaciones creadas con CodeIgniter 2.x. El error consistía en que nada más ejecutar la aplicación web, aparecía el siguiente error, que además impedía que la aplicación funcionase:

A PHP Error was encountered
Severity: Notice
Message: Only variable references should be returned by reference
Filename: core/Common.php
Line Number: 257

Captura de pantalla - 160614 - 17:05:29

 

La búsqueda fue bastante infructuosa, y hasta hace un par de días, nadie respondió a un llamamiento en los foros de Ellislab (el equipo creador de CodeIgniter). Varias soluciones se habían propuesto, pero ninguna era efectiva. Este pequeño arreglo es lo que he utilizado, de modo que ahora puedo continuar usando mi instalación de Lighhtpd, PHP y MySQL, proporcionadas por Debian.

El error se refiere a la línea 257 del archivo /system/core/Common.php, que dice esto:

return $_config[0] =& $config;

Lo que hay que hacer es sustitutirla por:

$_config[0] =& $config;
return $_config[0];

Después de esto, la aplicación funciona correctamente.

Instalación y puesta en marcha de XAMPP en Debian testing

1403450164_source_php

Hace una semana aproximadamente ejecuté la actualización periódica de mi Debian testing. Casi nunca ttengo problemas, porque la versión testing es casi tan estable como la Debian stable, pero con software más actualizado. Lamentablemente, una de las actualizaciones fue la de PHP, que se actualizó a la versión 5.6.0-beta3. Resulta que el framework quu utilizo, CodeIgniter, tanto en su versión 2.1.4 como en la 2.2, tiene problemas con esa nueva versión de PHP. Así, descubrí con horror que todas las aplicaciones que había construido con CodeIgniter daban error.

Al principio no sabía si era del servidor web o del PHP o de la propia aplicación. Es un error no sólo molesto, sino que impedía utilizar la aplicación completamente. Tras un par de horas de búsqueda, vi el error en numerosas páginas (probablemente porque estaban programadas con el framework CodeIgniter), pero no vi ninguna solución útil, aunque de algo sí me sirvió la búsqueda: el problema era de incompatibilidad entre CodeIgniter y PHP 5.6.0. El error en cuestión era el siguiente:

A PHP Error was encountered
Severity: Notice
Message: Only variable references should be returned by reference
Filename: core/Common.php
Line Number: 257

Captura de pantalla - 160614 - 17:05:29

 

De todas las estrategias que vi, me llamaron dos la atención:

  • Hacer un downgrade a cualquier versión de PHP funcionante;
  • Eliminar de mi equipo el servidor web, el servidor MySQL y PHP, e instatar, por ejemplo XAMMP.

Continúa leyendo Instalación y puesta en marcha de XAMPP en Debian testing

Modificar la caducidad de las sesiones en PHP (I)

1376240811_Clock4Desde que utilizo CodeIgniter para programar, no suelo tener problemas con la duración de las sesiones o de cualquier otro problema que tenía al trabajar con PHP directamente. Una de las ventajas de los frameworks es que hay un montón de cosas que dejan de preocuparme, porque sé que la aplicación ya se ocupa de ellas. Una de estas cosas es al duración de las sesiones y la propagación de los datos almacenados en la sesión.

Al crear mis antiguas aplicaciones en PHP, solía controlar la duración de las sesiones con únicamente un parámetro, session.gc_maxlifetime, que por defecto está ajustado a 1440 segundos (24 minutos), ya que lo cambiaba a 7200 segundos (dos horas, o 120 minutos).

Continúa leyendo Modificar la caducidad de las sesiones en PHP (I)

Sin sonido en Debian Wheezy (solucionado, claro)

1370215477_kmixdockedHace un par de días hice una actualización de las gordas para mi Debian. Pasé de Squeeze a Wheezy, y lo primero que falló fue el sonido. No me sorprendió en exceso, porque realmente es un mal menor. Cuando instalé Squeeze, hace ya un par de años, el sonido se configuró automáticamente, con PulseAudio. No tuve que modificar absolutamente nada. Ahora que he hecho una actualización de versión a Wheezy, el sonido ha dejado de funcionar. Como digo, no me sorprende, porque es un problema común cuando se instala Wheezy o cuando se actualiza.

Afortunadamente hay una manera sencilla de arreglarlo, o por lo menos a mí me ha resultado sencilla. Tomé como base el post que había escrito hace dos años, en que en la primera instalación de Squeeze, el sonido no funcionaba. En aquel momento tuve que descargar, compilar e instalar los paquetes de ALSA que indicaba. Era un proceso laborioso y pesado, en el que había que descargar 4 paquetes y compilarlos uno por uno.

En Wheezy sólo tuve que instalar un par de paquetes vía apt-get y luego bajar y compilar alsa-driver. Reinicié y luego funcionó todo.

Continúa leyendo Sin sonido en Debian Wheezy (solucionado, claro)

Chrome (o Chromium) en Debian Wheezy tras un proxy

1370214429_chromium-browserDesde que hace menos de un mes la versión 7 de GNU/Linux Debian se ha convertido en la versión estable, he actualizado la máquina Debian que tenía en el trabajo. Aunque en casa ya estaba utilizando la versión testing (hasta hace un mes, Wheezy), en el trabajo es esencial la estabilidad, así que de momento sigo siendo estable.

El caso es que pasar de Squeeze a Wheezy es trivial:

apt-get update
 
apt-get upgrade
 
apt-get dist-upgrade
 
apt-get autoremove
 
apt-get dist-upgrade

Sin embargo hay cosas que dejan de funcionar, por ejemplo, el sonido, aunque para eso ya tengo una entrada preparada próximamente.

Otra de las cosas que tuve que volver a configurar era la conexión de Chrome o de Cromium, si decidimos no instalar la última versión desde los repositorios de Google. Mientras que Iceweasel (Firefox en el mundo no-Debian) permite configurar un servidor proxy, Chromium no lo permite, sino que utiliza el proxy del sistema.

La vieja manera de configurar un proxy para el sistema no sirve:

export http_proxy=http://usuario:password@172.21.79.39:8080

Así que no tuve más remedio que arrancar cada instancia de Chromium indicando que iba a usar un proxy:

/usr/bin/google-chrome --proxy-server=http://172.21.79.39:8080

Este comando se pone en el acceso directo de la barra de tareas.

Captura de pantalla - 020613 - 20:09:45

He de advertir que en Chrome/Chromium no se puede definir bien el usuario y la contraseña, de modo que siempre que abramos el navegador, nos saldrá el prompt para indicar login y password. Pero es un mal menor.

Grabar una ISO desde consola

1362449478_consoleAprovechando que Brasero no me termina de convencer, sigo grabando CDs desde la consola. Ya hace casi un año escribí una entrada sobre los problemas que me daba Brasero, y que no he terminado de arreglar, por eso sigo con la consola. El caso es que me sigue sorprendiendo la facilidad, la fiabilidad  y la rapidez con que se hacen las cosas desde la consola, de modo que retomo las explicaciones para el uso de la consola para grabar CDs.

En mi caso, por razones que ya contaré más adelante, he decidido despedirme de Archlinux (quiero pensar que es un hasta luego y volver a poner Debian en el portátil.

No tengo ninguna duda, o Debian o nada. Como mucho, podría instalar Linux Mint, pero resulta que Linux Mint Debian Edition ya no viene con XFCE, sino con MATE (fork de Gnome 2) o Cinnamon (fork de Gnome 3).

Así que me he decido por instalar Debian testing (Wheezy, en estos momentos) con XFCE como escritorio.

Después de bajarme la ISO desde el Torrent (sigo alucinando por la velocidad que alcanza esto), llega la hora de grabar la ISO:

Comprobemos cuál es nuestro dispositivo:

wodim --devices

Saldrá una cosa así:

wodim: Overview of accessible drives (1 found) :
-------------------------------------------------------------------------
 0 dev='/dev/sg0' rwrw-- : 'HL-DT-ST' 'DVDRAM GSA-4081B'
-------------------------------------------------------------------------

En mi caso es /dev/sr0, pero puede ser/dev/cdrom, /dev/scd0, etc.

wodim -v -dao speed=1 -eject dev=/dev/sro -data debian-6.0.7.iso

Carpetas de usuario de Gnome/XFCE

1357628548_user-homeAunque la configuración que nos deja Debian nada más terminar de instalar el sistema operativo en más simple que el mecanismo de uso de los chupetes, con los iconos iguales de feos, uno puede remozar un poco la estética del Escritorio y de sus entorno gráfico. En mi caso, que uso XFCE, me gusta mucho su simplicidad, pero también agradezco cualquier ayuda a la navegación y al uso de carpetas y ficheros.

Las carpetas personales o carpetas de usuario las vi por primera vez en Gnome, cuando Gnome y Debian se querían. Son carpetas dentro de nuestro directorio de usuario que llevan un icono en relieve que nos indica el contenido. Estas carpetas, aunque suelen venir por defecto en una instalación limpia de Gnome o de XFCE, a veces no aparecen, porque hemos estado manipulando nuestra carpeta /home o algo semejante.

El caso es que por defecto aparecen así:

captura-de-pantalla-191112-12-57-54-467281.jpg

Vemos que en esta captura de pantalla se utiliza también los iconos Faenza, y que cada carpeta tiene un distintivo característico, que hace que sepamos qué contenido tiene cada una. Esto no sólo en una ayuda a la navegación, sino que cualquier programa va a encontrar en qué carpeta tiene que guardar las fotos, ya se llame Fotos, Imágenes o Pictures, , o dónde descargar la música, tanto si se llama Música como Music.

En ocasiones, como digo, esa configuración se pierde, y el sistema no sabe qué carpeta utilizar por defecto. Esto se configura en $HOME/.config/user-dirs.dirs. Editamos el archivo:

nano /home/rafalinux/.config/user-dirs.dirs

Y lo que nos aparece es algo como esto:

Captura de pantalla - 080113 - 01:56:39

Desde aquí ya podremos manejar que carpetas queremos que sean las preconfiguradas para contener los archivos personales.

Lo bueno de esto es que cada vez que le hacemos un cambio de theme al Escritorio, estos iconos se nos actualizan automáticamente.

Slim en GNU/Debian Wheezy

1357624336_preferences-system-loginSi bien es cierto que ya he comentado cómo configurar XFCE en Archlinux,últimamente estoy volviendo a utilizar más Debian como distribución principal, y me estoy encontrando que no lo tengo muy configurado. Para lo poco que utilizaba la máquina que tenía Debian, no valía la pena ponerme a configurar cosas.

De hecho, las últimas peripecias con discos duros y recuperaciones del sistema de archivos llevan la impronta de haberlas hecho desde Debian. Sigo pensando que Debian es lo más estable que he utilizado jamás. Espero que dentro de unos días pueda escribir algo sobre mis últimas y frustrantes experiencias con Archlinux.

Instalar Slim es sencillo:

apt-get install slim

En esta ocasión no tenemos el paquete slim-themes, que sí teníamos en Archlinux. Si queremos algún theme, tendremos que visitar la página de Slim. Los temas que nos podremos bajar de allí están comprimidos, y habrá que descomprimirlos en:

/usr/share/slim/themes

Si navegamos hasta allí podremos ver que ya hay algunos themes instalados, sin embargo he de decir que son feos. Son muy feos. Así que lo mejor es bajarse algunos, o liarse la manta a la cabeza y crearse uno (no es nada difícil).

Para saber cómo nos quedarán los themes instalados:

cd /usr/share/slim/themes
slim -p debian-joy

Cambiaremos debian-joy por el nombre del theme correspondiente. A mi me gustó mucho un theme que encontré en Desde Linux. Básicamente, lo que tendremos es un montón de themes colgando del directorio antes mencionado:

/usr/share/slim/themes/[nombre_del_theme]

Ahora hay que decirle a Slim que nos gusta ese theme. En Debian configuraremos el slim.conf:

nano /etc/slim.conf

En mi caso particular, lo que he modificado ha sido lo siguiente:

numlock             on
 
welcome_msg         Bienvenido a %host
 
default_user        rafalinux
 
focus_password      yes

Estas modificaciones son para facilitar el uso, casi siempre. Siempre es agradable tener una ventana de login agradable, pero soy de los que piensan que siempre tiene que haber una ayuda a la utilización de cualquier sistema. Con esta configuración le he dicho a Slim que me haga un auto-login, pero sin poner la contraseña, de modo que cuando entre en el sistema, sólo tenga que teclear el password.

Y realmente ya hemos terminado. En /etc/slim.conf ya está configurado el comando para entrar en la sesión:

login_cmd exec ck-launch-session /bin/bash -login /etc/X11/Xsession %session

Este comando no hay que tocarlo (al contrario que en Archlinux, que debíamos tocar varios archivos de inicio para que Slim nos iniciara la sesión correctamente).

Sobrevivir a un fallo del sistema de ficheros de GNU/Linux

1357433198_CarRepairEl título es una copia de una entrada del blog Nix Craft, , precisamente llamada Surviving a Linux Filesystem Failures. Lo que pretendo describir es algo que me pasó realmente, y que tardé varios días en arreglar. De repente, no sé muy bien por qué, uno de los discos duros en los que guardaba las descargas del Torrent y otros documentos cascó. Vale, lo de cascar es un término muy genérico. ¿Qué le pasaba? Pues que no se montaba, ni desde XFCE ni desde la consola. En el post arriba mencionado nos comentan que un fallo del sistema de ficheros de GNU/Linux se manifiesta en estos tres fenómenos:

  • El disco duro no se monta, a pesar de ser reconocido por el sistema.
  • El sistema entero se cuelga al intentar hacer un diagnóstico de lo que le pasa a la unidad de disco.
  • Incluso si no se cuelga, incluso si se monta el dispositivo, no se puede acceder a los ficheros, o lo hace lentamente o aparecen caracteres extraños al listar estos ficheros.

Continúa leyendo Sobrevivir a un fallo del sistema de ficheros de GNU/Linux

Migrar de Disco Duro en Debian

1357093545_41-Macintosh HDHace unas semanas me cascó la fuente de alimentación y la placa base. Desafortunadamente tuve que cambiar prácticamente toda la máquina, porque ya no le valía ni la memoria ni el micro ni el ventilador. No hay mal que por bien no venga, así que aproveché para actualizarlo. Era un AMD modesto, y lo cambié por otro AMD. Aproveché la tarjeta gráfica (menos mal que la placa ASUS venía con un socket para PCI-e), la caja, los discos duros y la fuente de alimentación.

Al principio reinstalé los discos duros exactamente como estaban en la anterior máquina, de modo que al arrancar no tuve ningún problema. El sistema parecía que no se había modificado.

Sin embargo tuve que haberme dado cuenta (y no lo hice) de que mi disco duro principal era de 80 Gb y que hacía unos 7 años que estaba con él. Llegaba la hora de cambiarlo, fundamentalmente porque se había quedado pequeño. Siempre lo había expandido con discos duros internos que hacían las veces de nuevas carpetas montadas dentro del directorio personal.

El caso es que hay que cambiar el viejo disco de 80 Gb por uno un poco más grande, digamos 500 Gb. ¿Y cómo hacerlo sin reinstalar todo el sistema? Después de mucho pensar y mucho leer, decidí que lo mejor sería hacerlo como voy a explicar ahora, mediante rsync y dd.

Continúa leyendo Migrar de Disco Duro en Debian