Instalar Menéame desde cero (parte II) #meneame
Diferentes errores en la versión 4 que en la 5
En el anterior artículo comenzamos la instalación del código de Menéame desde cero. Tras copiar los archivos, crear el nuevo archivo de configuración, crear la base de datos e importar los tres archivos sql, observamos que saltan dos importantes errores que impiden continuar con el proceso.
Estos dos errores solo me han aparecido al intentar instalar la versión 4 del código de Menéame, en la 5 no han aparecido.
El primero de ellos dice lo siguiente:
Error, site_shortname not found, check your global['site_shortname']: mnmerror in query: set @user_id = 0, @ip_int = 1, @ip_int = 1, @enabled_votes = date_sub(now(), interval 96 hour), @site = (You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1)
Parece que no hemos definido la variable site_shortname (nombre corto del sitio) pero esto es totalmente falso ya que si vas al archivo config.php verás que sí está definida. ¿Entonces? Me fijo en el error de la consulta y me quedo con esto:
Error, site_shortname not found
Solucionando y entendiendo el primer error
Ahora voy a usar uno de mis favoritos programas del que he hablado varias veces en esta web. El programa es FileSeek y es muy útil para buscar expresiones regulares en archivos. Introduzco el texto de antes y observo que proviene de 2 archivos, uno de ellos es:
C:\xampp\htdocs\karmanyMNM\libs\sites.php en la línea 22
Si observas esa consulta y depuras, verás que el error viene porque no puede evaluar esta consulta:
select id, parent from subs where name = '".$globals['site_shortname']."'
Es decir, está haciendo una consulta a la tabla subs seleccionando los campos id y parent y además en el campo name debe contener (en texto) lo mismo que nuestra variable local. En el anterior artículo no modificamos la variable $globals['site_shortname'], así que, por defecto, y puedes observar también en el archivo config.php, dicha variable tiene que ser mnm. Lo puedes ver en el código de error del segundo párrafo de este tutorial. $globals['site_shortname'] : mnm
Nota: mnm es por defecto el nombre corto de menéame. Tú puedes cambiarlo por el que más te guste.
Así que tenemos que crear un subsite. Así que voy en phpMyAdmin a la tabla subs y creo (insertar) el siguiente registro:
id = 1
name = mnm
enabled = 1
parent = 0
server_name = localhost
url_name = /karmanymnm/
Con esto ya estará solucionado el primer error. Un subsite en menéame es, por ejemplo, general y otro deportes (para que se entienda), son sitios completamente diferentes.
Solucionando y entendiendo el segundo error
Haanga Compiler Exception. Este error no sale (o no me ha salido en servidor, solo en local). Imagen del error:
Esta excepción es más compleja pero gracias a que esto mismo ya le pasó a otro usuario, éste se lo comentó en este hilo directamente al autor de Haanga (César D. Rodas) y la solución la dejó bien clara en un tweet:
@jonarano Entonces en http://t.co/x9X8pa3D 'autoload' debería ser TRUE. (en el array $config)
— César D. Rodas (@crodas) octubre 12, 2011
Por si un día desaparece el Tweet, o no quieres leerlo, viene a decir que en el archivo:
C:\xampp\htdocs\karmanyMNM\libs\init.php
Modifiques esto:
$config = array(
'template_dir' =>
mnmpath.'/'.$globals['haanga_templates'],
'autoload' => FALSE, /*
Don't use Haanga's autoloader */
por esto:
$config = array(
'template_dir' =>
mnmpath.'/'.$globals['haanga_templates'],
'autoload' => TRUE, /*
Don't use Haanga's autoloader */
Corrigiendo estos 2 errores, si vuelvo a recargar el proyecto: localhost/karmanyMNM en un primer momento aparece lo siguiente:
Fatal error: Class 'Link' not found in C:\xampp\htdocs\karmanyMNM\index.php on line 73
Tal vez sea por varias pruebas que he hecho, pero parece que se soluciona deteniendo el módulo Apache de XAMPP y volviéndolo a activar o simplemente recargando el navegador. Ahora, solo en la versión 5, tengo este otro error (o similares haciendo referencia al archivo basic.js):
Fatal error: Uncaught exception 'Exception' with message 'View js/basic.js doesn't exists' in C:\xampp\htdocs\karmanyMNM\libs\Haanga.php on line 347
Si lo depuro con Eclipse, veo que el problema es que no existe el archivo basic.js en esta dirección:
C:\xampp\htdocs\karmanyMNM\templates\js\basic.js
Esto me llama la atención porque dentro de la carpeta templates, existe un archivo js (con contenido ../js) que es un enlace simbólico a la carpeta del directorio superior js. Este error seguramente no ocurra en servidor pero en Apache/XAMPP sí. Una sencilla y rápida solución, para trabajar en local, es copiar el archivo:
C:\xampp\htdocs\karmanyMNM\js\basic.js
Y crear el directorio js en templates y pegar ahí el archivo, quedando así:
C:\xampp\htdocs\karmanyMNM\templates\js\basic.js
Del mismo modo que he copiado el archivo basic.js, como pueden fallar más enlaces a archivos, copio completamente los dos directorios js y css y los pego dentro de la carpeta templates.
He intentado buscar si esto era problema de la directiva para servidores Apache relacionada con enlaces simbólicos: "FollowSymLinks", pero no he encontrado solución. En local no me importa.
Primera ejecución sin errores
Por fin, la primera ejecución sin errores. Sin embargo, al recargar la web observo que solo aparece el código HTML y ¡no hay ningún estilo!. Observa:
Como podrás ver, también ha reconocido la variable global "Menéame desde karmanyNET" del archivo localhost-local.php. Por el estilo (en la versión 4) no te desesperes que tiene fácil solución y te ahorrarás las más de 2 horas que tardé en encontrar el problema... Lo veremos en la tercera parte...
Los tutoriales estaban escritos para la versión 4 del código de menéame y la versión 5 trae muchas novedades y otros errores complejos. El siguiente artículo ya está hecho y pensaba publicarlo hoy pero estoy analizando detenidamente el código de la versión 5 para no tener problemas en los siguientes tutoriales y no tener que reescribirlos.
Un saludo y gracias por tu comentario.
Un saludo