Corregir el error «Illegal string offset ‘data’…» en Drupal 5

Para los que somos un poco vagos y todavía mantenemos páginas en Drupal 5, una de las cosas más molestas son los continuos errores que aparecen en el registro debido a las nuevas versiones de PHP que van saliendo. Uno de ellos es el error «Illegal string offset ‘data’ en la línea 110 del archivo /nuestro_drupal5/includes/tablesort.inc

La solución la tenemos en este enlace, que nos cuenta que para corregirlo hay que cambiar dicha línea 110 de código del archivo /nuestro_drupal5/includes/tablesort.inc de la siguiente forma. Donde dice:

if (isset($header[$i]) && $header[$i]['data'] == $ts['name'] && $header[$i]['field']) { 

Lo cambiamos a:

if (isset($header[$i]) && isset($header[$i]['data']) && $header[$i]['data'] == $ts['name'] &&  isset($header[$i]['field']) && $header[$i]['field']) { 

Y con esto desaparecen los molestos mensajes de error.

 

 

 

Activar xdebug en XAMPP

Después de instalar XAMPP en Windows, para poder hacer debug de una aplicación en PHP con Netbeans hay que hacer unos pequeños cambios en el php.ini que viene por defecto. A partir de este momento consideraremos <xampp_home> el directorio donde hayamos instalado XAMPP, por ejemplo «c:\xampp»

Abrimos el fichero <xampp_home>\php\php.ini

Al final del mismo encontraremos la parte que se refiere a Xdebug. Tendremos que descomentar, es decir, quitar el «;» (las líneas que comienzan con un «;» son consideradas comentarios) de las líneas siguientes:

zend_extension = «C:\xampp\php\ext\php_xdebug.dll»

xdebug.remote_enable = 1
xdebug.remote_handler = «dbgp»
xdebug.remote_host = «127.0.0.1»

Ojo: también tendremos que poner el remote_enable a «1», que por defecto viene a «0». De forma que esas líneas del fichero nos quedan así:

xdebug_php_ini

Reiniciamos el servidor Apache y ya podemos hacer debug de programas PHP en Netbeans

(Tomado de la entrada: http://www.wikihow.com/Configure-XDebug-in-XAMPP-%281.7.2/Later%29-on-Windows )

Instalar Linux junto a Windows 10 en un portátil Acer Aspire E5

El siguiente procedimiento describe la instalación de Ubuntu 15.10 en un portátil Acer Aspire E5, pero debería de funcionar también para cualquier otra distribución que tenga incorporado ya el sistema UEFI (Ubuntu 14.04+) y cualquier otro portátil Acer más o menos parecido a éste. El procedimiento es sencillo, pero tiene varios pasos muy diferenciados que tenemos que hacer en ese mismo orden. Empecemos.

Actualizar la BIOS

Lo primero que hay que hacer es actualizar la BIOS del equipo, porque algunas de sus versiones no permiten ni la instalación de Linux ni el arranque en modo Live desde un USB. Para ello hay que acceder a la página de descargas de Acer, seleccionar el tipo y modelo de portátil, pulsar en la pestaña BIOS/Firmware y descargarse la versión más moderna de la BIOS, que en mi caso fue la v1.35. La versión 1.31 creo que también es válida, o al menos eso dicen en los foros; si es la que tiene el portátil de fábrica, no es necesario actualizarla. La que sí que no funciona es la versión 1.25, que era justo la que traía el mío. La actualización de la BIOS no conlleva ninguna complicación y se puede hacer fácilmente siguiendo las instrucciones del ejecutable que descargamos.

Desactivar el fast-boot en Windows

Para ello seguimos las instrucciones que tenemos en la página de Acer, las cuales nos dicen que tenemos que ir a Panel de Control / Opciones de energía / Elegir lo que hacen los botones de encendido / Cambiar ajustes actualmente no disponibles y desmarcar el check-box que pone «Activar arranque rápido» que aparece en la parte de abajo de la pantalla.

Dejar espacio libre en el disco duro

El siguiente paso es hacer sitio en el disco duro, algo que tenemos que hacer obligatoriamente desde dentro de Windows 10, no nos sirve hacerlo desde la distribución Live de Linux ni desde GParted. Para ello pulsaremos con el botón derecho en el icono de Windows 10 abajo a la izquierda y seleccionaremos la opción «Administración de discos». En la ventana que se nos muestra nos aparecen tres particiones, nos fijamos en una de ellas etiquetada C y con formato NTFS, la más grande. La seleccionamos, pulsamos el botón derecho sobre ella y seleccionamos la opción «Reducir volumen». Tras un tiempo calculando nos muestra cuánto tenemos libre. Ajustamos el espacio que queramos, por ejemplo yo he utilizado 90 Gb pero con 10-20Gb puede ser más que suficiente, depende de lo que vayamos a instalar posteriormente en el sistema linux. Cuando termine, dejamos el espacio libre vacío, sin asignar ni formatear.

Modificar el orden de arranque en la BIOS

Ahora ya podemos arrancar desde un USB en el que previamente hayamos instalado Ubuntu para iniciar en modo Live, pero antes tenemos que cambiar los parámetros de la BIOS para que el sistema arranque primero desde el USB. Para ello reiniciamos el equipo y al inicio del arranque pulsamos F2, lo que nos permite entrar a cambiar la configuración de la BIOS. Vamos a Boot, y en el orden de arranque ponemos en primer lugar el USB (mediante las teclas de función F5 y F6 podemos cambiar el orden de las unidades). Guardamos los cambios en la BIOS, salimos y si tenemos el USB insertado, al pulsar F12 en el arranque ya podremos seleccionar que lo haga desde el dispositivo USB con Ubuntu.

Iniciar desde un USB Live de Ubuntu e instalar el sistema Linux

Cuando arranca Ubuntu en modo Live, seleccionaremos la opción «Try Ubuntu…» y cuando finalmente se muestre el escritorio veremos que todo va bien menos la conexión inalámbrica (conseguir que funcione el wifi es tema para otra entrada del blog), por lo que tendremos que trabajar con el equipo conectado por cable si queremos actualizar el sistema tras su instalación.

Pulsamos el icono de «Instalar Ubuntu» y procedemos con el conocido y facilísimo proceso de instalación de Ubuntu en el disco duro, seleccionando cuando nos lo pregunte la opción «Instalar Ubuntu junto a Windows 10». Esta forma de instalación de Ubuntu es específica para sistemas con UEFI activado, por lo que no se instala el grub de la manera habitual en sistemas anteriores, sino que lo hace de forma que Ubuntu pueda arrancarse posteriormente desde el Windows Boot Manager.

Cuando termina la instalación pulsamos reiniciar el equipo y extraemos el USB para que se arranque desde el disco duro.

Incluir el nuevo sistema en el arranque de Windows

Cuando el sistema arranca vemos que directamente entramos en Windows 10, como si no hubiéramos hecho nada. Bien, eso es porque todavía no le hemos dicho al arranque de Windows que hay otro sistema operativo en el disco que queremos poder seleccionar cuando queramos. Así que volvemos a reiniciar el equipo, pulsamos F2 para entrar en las opciones de la BIOS y vamos a Security. Primero tenemos que seleccionar la opción de dar una password al supervisor (que somos nosotros). Lo hacemos, confirmamos la password y vemos que ahora ya nos permite seleccionar más opciones. Seleccionamos la opción «Elegir un fichero UEFI seguro». Nos aparece una pantalla en la que solamente aparece HDD0 o algo parecido. Pulsamos Intro. En la siguiente pantalla vemos que ya nos aparece una etiqueta que pone Ubuntu, la seleccionamos y pulsamos Intro. Posteriormente aparece una lista de ficheros de los que seleccionamos el correspondiente a Grub. Y ya está, guardamos las modificaciones en la BIOS, salimos y al reiniciar ya nos aparece el conocido menú de arranque de Grub en el que tenemos tanto la opción de iniciar Ubuntu como la de iniciar en el sistema Windows 10 con el que convive en el mismo disco duro.

 

Error #2006 – MySQL server has gone away importando archivo en PhpMyAdmin

Minientrada

Utilizando un entorno WAMP (Windows 10, Apache, MySQL, PHP), cuando intento importar un archivo con el volcado de una base de datos en MySQL utilizando PhpMyAdmin me encuentro con que la carga se detiene y se genera el error «#2006 – MySQL server has gone away».
El archivo es bastante grande, y aunque he puesto los límites de memoria y de tamaño de archivo suficientemente altos en el archivo php.ini, está claro que también es necesario modificar la configuración de mysql para poder hacer la carga. El truco está en modificar la línea
max_allowed_packet = 1M
en el archivo <directorio de WAMP>/mysql/bin/my.ini dejándola como
max_allowed_packet = 10M

Curiosamente, este error nunca me había dado cuando he trabajado en Linux, debe de ser que la configuración por defecto de mySQL en Linux ya viene preparada para cualquier eventualidad 🙂

Lo he visto en Stack OVerflow (como casi todas las soluciones)

Actualizar a Fedora 23 por consola con dnf

Actualizar a Fedora 23 mediante dnf es fácil, solamente tiene la pega de que es necesario descargar 1,4 Gb y eso lleva tiempo si no se tiene una conexión rápida. La forma de hacerlo sería la siguiente:

  1. Haz una copia de respaldo de tu sistema y de la información importante que guardes en el disco. Se dice siempre, pero nunca se hace. Luego vienen los lamentos.
  2. Desinstala todo lo que realmente no necesites. La actualización necesitará espacio en disco y si has hecho la instalación standard de Fedora con el directorio root en una partición aparte no muy grande, es posible que te quedes sin espacio. Después de hacer todos los sudo dnf remove <lo_que_sea> que hagan falta, es muy conveniente hacer un sudo dnf clean all para obtener espacio libre limpiando todo lo que ya no se necesita.
  3. Actualiza primero tu sistema con sudo dnf update --refresh. Si se te instala un nuevo kernel, tienes que reiniciar el sistema antes de continuar. Si no estás seguro de que haya pasado, reinicia por si acaso.
  4. Instala el plugin de actualización con sudo dnf install dnf-plugin-system-upgrade
  5. Descarga los paquetes necesarios con sudo dnf system-upgrade download --releasever=23 --best --allowerasing
  6. Si todo termina sin errores, ya puedes lanzar la actualización a Fedora 23 con sudo dnf system-upgrade reboot

Esta entrada ha sido escrita a partir del contenido de esta página, en la que tienes más información sobre el plugin dnf-system-upgrade, y de esta otra en donde tienes también una serie de pantallazos con el proceso de actualización.

Instalar LAMP en Fedora 22

Para instalar el entorno de desarrollo LAMP en Fedora 22 tenemos que realizar los siguiente pasos en una terminal:

  1. Instalar (como root) el servidor web con el comando: dnf groupinstall «Web Server»
  2. Instalar la base de datos: dnf install mariadb-server
  3. Modificar el fichero /etc/php.ini para adaptarlo a nuestras necesidades
  4. Arrancar el servidor web con: service httpd start
  5. Arrancar la base de datos con: service mariadb start
  6. Asegurar la base de datos con el comando: mysql_secure_installation
  7. Instalar phpmyadmin (si lo vas a usar, claro): dnf install phpmyadmin
  8. Habilitar el directorio de usuario de Apache:
    1. Editamos el fichero /etc/httpd/conf.d/userdir.conf para que quede así (sustituyendo usuario por nuestro nombre de usuario)etc_httpd_conf.d_userdir.conf
    2. Creamos el directorio ~/public_html con: mkdir ~/public_html
    3. Le damos los permisos necesarios con: chmod 755 ~/public_html
    4. Le damos los permisos necesarios a /home con: chmod 711 /home/usuario
    5. Configuramos SELinux para permitir los directorios de usuario con:
      setsebool P httpd_enable_homedirs true
    6. Reiniciamos el servidor con: service httpd start

Y ya está. Tenéis más información en este artículo y este otro, que son los que he consultado para hacer esta entrada.

Cómo habilitar las clean url de Drupal en el directorio de usuario de Apache2 en Debian/Ubuntu y Fedora

  1. Habilitar el módulo mod_rewrite de Apache. En Debian/Ubuntu hay que lanzar el comando: sudo a2enmod rewrite. En Fedora ese módulo ya viene habilitado por defecto.
  2. Editar el fichero /etc/apache2/mods-enabled/userdir.conf en Debian/Ubuntu cambiando la linea con AllowOverride FileInfo AuthConfig Limit Indexes de forma que solo tenga AllowOverride All. En Fedora dicho fichero está en /etc/httpd/conf.d/userdir.conf
  3. Editar el fichero .htaccess de nuestro directorio de Drupal descomentando la linea con la opción RewriteBase y dejándola como  RewriteBase /~MiUsuario/miDirectorioDrupal/
  4. Reiniciar Apache. En Debian/Ubuntu con el comando: sudo service apache2 restart y en Fedora con: sudo service httpd restart

Este procedimiento me ha funcionado con Ubuntu 14.04 con Drupal 8, y también en Fedora 23 con Drupal 7

En esta entrada recojo mi experiencia personal tras seguir las indicaciones de:
http://tolocalhost.blogspot.com.es/2013/04/enabling-drupal-clean-url-in-apache2.html

Error «Cannot find include file …» en NetBeans

Minientrada

Si empezamos a codificar en el lenguaje C/C++ utilizando NetBeans IDE es probable que cuando hagamos nuestra primera aplicación nos encontremos con el error «Cannot find include file …»

Para solucionarlo, cerramos el IDE e instalamos las utilidades necesarias para construir aplicaciones C++, en Debian/Ubuntu y distribuciones derivadas se consigue mediante el comando:

sudo apt-get install build-essentials

En las distribuciones de Linux derivadas de Archlinux el comando sería:

sudo pacman -S base-devel

Una vez hecho esto, abrimos de nuevo NetBeans, vamos a Tools / Options / C/C++ y en la pestaña Build Tools pulsamos en el botón Restore Defaults y luego en el botón Apply. A continuación vamos a la pestaña Code Assistance, pulsamos en el botón Reset Settings y luego en Apply.

Una vez hecho esto deberían de desaparecer los errores en los «include».

Instalar LAMP en Chakra Linux

Voy a separar la instalación en varias partes: instalar el servidor de páginas web con PHP, el mySQL, el phpMyAdmin y por último la habilitación de un directorio de usuario para desarrollo de nuestras páginas web. Aunque esta instalación la he realizado en Chakra Linux 2015.03 Euler, los pasos creo que también funcionarán para cualquier distribución basada en Arch Linux.

Instalación del servidor de páginas web

Para ello utilizamos el siguiente comando, que nos instala los paquetes principales y otros que nos vendrán bien:

sudo pacman -S apache php php-apache php-gd php-mcrypt php-pear xdebug

El xdebug solo lo uso para depurar las aplicaciones en NetBeans, luego si no se usa ese entorno de trabajo no es necesario instalarlo. Arrancamos el servicio con el comando:

sudo systemctl start httpd.service

Para comprobar que funciona el servidor de páginas web podemos acceder con el navegador a la página http://localhost y ver que nos aparece el famoso «It works!»

Para incluir el PHP, editamos el fichero de configuración de Apache (yo uso el editor vim, pero eso es cuestión de gusto y penitencia personal):

sudo vim /etc/httpd/conf/httpd.conf

Y justo después de la línea

LoadModule dir_module modules/mod_dir.so

Incluimos la línea

LoadModule php5_module modules/libphp5.so

Y después del último «Include» en ese mismo fichero, añadimos las líneas:

# PHP
Include conf/extra/php5_module.conf

Para comprobar que funciona el PHP creamos un fichero info.php en el directorio donde tendremos nuestras páginas web (en este caso es el directorio /srv/http)

sudo vim /srv/http/info.php

En ese fichero incluimos el contenido siguiente:

<?php phpinfo(); ?>

Y accedemos a la página http://localhost/info.php para comprobar que funciona. Se nos mostrará la página de información de PHP con los datos de nuestra instalación.

Instalación de mySQL

Por defecto en Chakra Linux nos viene ya instalado el MariaDB, un clon de mySQL. Podemos comprobarlo con el comando:

sudo pacman -Ss mysql

Si no nos aparece como instalado, lo instalamos con el mismo comando anterior pero sustituyendo el «-Ss» por «-S».

A continuación editamos el fichero php.ini

sudo vim /etc/php/php.ini

Y en él descomentamos (quitamos el «;» inicial) de las líneas

extension=mysql.so
extension=mysqli.so
extension=pdo_mysql.so
extension=gd.so
extension=mcrypt.so

Arrancamos el servicio con el comando

sudo systemctl start mysqld.service

Y para asegurar la instalación de nuestro mySQL lo hacemos con el comando

sudo mysql_secure_installation

Con el cual podemos incluir una clave para el usuario root y dar mayor seguridad a nuestra instalación aceptando la opción por defecto que se nos muestra.

Instalación de phpMyAdmin

Para instalar este programa normalmente se hace mediante el paquete de cada distribución, si existe, pero en este caso lo haremos utilizando la fuente original. Para ello accedemos a la página http://phpmyadmin.net y nos descargamos el fichero zip con la última versión pulsando en el botón que pone Download.

El fichero que nos hemos descargado lo extraemos en el directorio /srv/http con el comando:

sudo unzip /<sitio_donde_lo_hemos_descargado>/phpMyAdmin-4.4.9-all-languages.zip -d /srv/http

Y como no nos gusta el nombre del directorio creado, lo cambiamos por otro más corto con el comando

sudo mv /srv/http/phpMyAdmin-4.4.9-all-languages /srv/http/phpMyAdmin

Para comprobar que funciona accedemos a la página http://localhost/phpMyAdmin, en la que podremos entrar con el usuario root y la clave que le dimos anteriormente.

Habilitar un directorio de usuario

Para ello tenemos que modificar el archivo /etc/http/conf/httpd.conf descomentando la línea

LoadModule userdir_module modules/mod_userdir.so

Tenemos también que verificar que en dicho archivo aparece también la línea que incluye nuestro archivo de configuración, que es

Include conf/extra/httpd-userdir.conf

Entramos en el archivo /etc/http/conf/extra/httpd-userdir.conf y comprobamos que incluye las siguientes líneas

<Directory "/home/*/public_html">
      AllowOverride FileInfo AuthConfig Limit Indexes
      Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
      Require method GET POST OPTIONS
</Directory>

A continuación creamos el directorio donde vamos a alojar nuestras páginas web y le damos permiso de lectura a él y a nuestro directorio de usuario (si no, nos aparecerá el famoso error 403 de Apache)

mkdir ~/public_html
chmod a+x ~
chmod a+x ~/public_html

Copiamos el fichero info.php que creamos en /srv/http al directorio ~/public_html y accedemos a él en la dirección

http://localhost/~nuestro_usuario/info.php

Y ya está, ya tenemos nuestro entorno LAMP en Chakra Linux. Si queremos que cada vez que arranque el sistema tengamos el servidor web y el mySQL disponibles, lanzamos los comandos:

sudo systemctl enable httpd.service
sudo systemctl enable mysqld.service

Un último detalle: si vamos a usar el depurador de PHP de NetBeans, tenemos que entrar en el fichero /etc/php/conf.d/xdebug.ini y comprobar que tiene las líneas

zend_extension=/usr/lib/php/xdebug.so
xdebug.remote_enable=on
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

 

KDE Dolphin no guarda los lugares de usuario

En una instalación nueva de openSUSE 13.2 me he encontrado con el bug 342685 aún no resuelto, que hace que los lugares que añadimos a la barra lateral de Dolphin no permanezcan cuando reiniciamos el navegador de archivos. La forma de solucionarlo es como indica el comentario 25 en la discusión, entramos al fichero:

/home/<nuestro_usuario>/.kde4/share/apps/kfileplaces/bookmarks.xml

Y ahí buscamos las etiquetas que se corresponde con el lugar que hemos creado y que no nos aparece, por ejemplo en mi caso es un acceso directo al directorio Dropbox, luego la parte del fichero a encontrar es:

<bookmark href=»file:///home/<nuestro_usuario>/Dropbox»>

<metadata owner=http://www.kde.org >

<isSystemItem>true</isSystemItem>
<metadata>
<bookmark>

La parte que tenemos que insertar en el xml es la etiqueta que ya he puesto en el ejemplo, y que podéis ver en ese fichero que la tienen todos los demás marcadores del sistema:
<isSystemItem>true</isSystemItem>

Hay que ponerla justo antes de la etiqueta <metadata> correspondiente.

Lo que hacemos es un engaño y algo chapucilla, la verdad, pues estamos haciendo creer al navegador que la carpeta es del sistema, cuando es una de usuario, pero mientras se corrige el bug, nos sirve.