Mi odisea con el código de meneame.net

Como conseguir que funcione el codigo de meneame.net en un hosting bastante capado (sin textutils, sin encoding, soporte para idiomas, etc).

Este mini-resumen presupone que sabes tocar mínimamente el código PHP, que has leído la guía de instalación y que sabes que es un sistema de promoción de noticias.

He conseguido después de una hora de andar trasteando (es la primera vez que instalo el software de meneame) que funcione bien e incluso forzar para publicar una noticia.

Aviso, esto es para poner en funcionamiento la versión a día 30 de octubre de 2006, puede que en otras versiones difiera. Esto es tan sólo para hacer pruebas y en nigún caso debe ser utilizado para ponerlo en un servidor en producción ya que alterar el código del meneame tal y como yo he hecho aquí, puede ocasionar graves problemas.

El problema fundamental con el hosting es que no soportaba todas las dichosas funciones de las textutils, luego, las he creado:

Añadir al principio de: config.php

//Cambios para que funcione en un servidor de hosting capado
//(OJO: Hacer esto puede ser un GRAN agujero de seguridad)
function _($t) {return $t;}
function mb_internal_encoding($a) {;}
function iconv($v1,$v2,$v3) {return $v3;}
function mb_substr($cad,$com,$lon) { return substr($cad,$com,$lon); }
function mb_strtolower($cad) { return strtolower($cad); }
function mb_strlen($cad) { return strlen($cad); }

En ocasiones bastaría sustituir _($t) con return gettext($t); ya que lo que falta es el alias, pero he supuesto que el servidor no tenga soporte para textutils.

Como el servidor de hosting no me deja usar el mod_rewrite del apache ni siquiera con .htaccess he tenido que comentar también las siguientes líneas del config.php

#$globals['base_story_url'] = 'story/';
#$globals['base_search_url'] = 'search/';
#$globals['base_user_url'] = 'user/';

Además, aconsejo que los cambios los hagáis directamente en el config.php y no en el hostname-local.php para que el funcionamiento sea más sencillo (he probado en el otro archivo e incluso fallaban algunas cosas, aunque no descarto que me haya olvidado algo, pero es mas directo, aunque menos compatible, cambiar directamente el archivo config.php).

Pero esto no ha sido todo, sino que he tenido que cambiar los siguientes archivos

  • editlink.php
  • libs/utils.php
  • submit.php

Y buscar la cadena html_entity_decode($param1, $param2, $param3) (donde paramX son los parámetros de la función) y eliminar $param2 y $param3 para que no haga nada raro con la codificación (fallaba porque el isp en cuestión no soportaba NADA de textutils, codificaciones, etc).

Ahora viene como forzar una noticia sin tener que cambiar los parámetros de mínimo 5 votos y mínimo 20 de karma para promocionar:

Saber el identificador de la noticia (tabla links) e introducirlo en la tabla votes (introducir 5 tuplas con distintas IPS para que deje y mucho valor de voto, así como asignar el voto al mismo usuario, es una forma un poco bastante burda, pero funciona). Después llamar al script promote2.php en el directorio que lo tengamos para que nos promueva nuestra primera noticia de prueba.

Importante: Para que no falle la portada es importante añadir una primera categoría (tabla categories). Tampoco hay que olvidarse de registrar un primer usuario y luego ir a la base de datos y cambiar en la tabla users el valor de user_level a God (parra hacerlo administrador).

ACTUALIZACIÓN: Para que funcione la fisgona, es importante que las variables base_url y demás estén correctamente definidas (en caso de estar apuntando a un subdirectorio, mirar el fuente para asegurarse). Pero esto no es todo, sino que también es necesario al principio del fichero: js/sneak03.js.php añadir también la función:

function _($s) {return $s;}

En caso que vuestro servidor de hosting le de por hacer de las suyas como es mi caso con cierta web.

AVISO: Este documento CONTIENE errores, además de estar escrito en los 10 minutos después de tener funcionando el código de meneame.net en un dominio con un hosting capado. Luego, si encontréis errores, por favor, avisadme.

Permito que se reproduzca todo o parte del documento donde sea siempre que se cite la fuente (en especial la redifinición de funciones en el config.php, ya que puede resultar útil SÓLO con fines de prueba).

ACTUALIZACIÓN: A la hora de pasar a este nuevo blog, se pierden los comentarios, por los que los reproduzco por si hubiese algo interesante:

Javi 22 noviembre, 2006, 22:35 Gracias por tu post, así he podido configurarlo en mi servidor, ahora el problema está en registrarme, en fin, no funciona la imagen de seguridad. He probado a poner esto: http://www.miurl.com/ts_image.php?ts_random=5

y da como resultado:

Warning:
 putenv() [function.putenv]: Safe Mode warning: Cannot set environment 
variable 'GDFONTPATH' - it's not in the allowed list in 
/home/tralari/domains/miurl.com/public_html/libs/ts.php on line 83
Warning:
 Cannot modify header information - headers already sent by (output 
started at /home/tralari/domains/miurl.com/public_html/libs/ts.php:83) 
in /home/tralari/domains/miurl.com/public_html/libs/ts.php on line 85
Fatal error: Call to undefined function: imagettfbbox() in /home/tralari/domains/miurl.com/public_html/libs/ts.php on line 67

Alguien tiene alguna idea? Ays qué difícil es instalar el meneito este snif snif.


Jose Sanchez 23 noviembre, 2006, 18:23 El problema es que no tiene instalada la librería GD para manipulación de gráficos o bien no te la deja usar por estar activado el safe_mode. Mucho me temo que tendrás que prescindir de la imagen de seguridad (cambiar el código PHP) o bien cambiar de servidor de hosting.


Gotardo 16 enero, 2008, 08:55 : Yo sé que esto ya esta anticuado… pero bueno … os cuento. Me he encontrado con el mismo problema con la imagen de verificaicón, y el caso es que utilizo la librería GD desde otros sitios de mi alojamiento… así que el problema debe ser otro.


Jose Sanchez 19 enero, 2008, 16:58 Si te da el mismo error prueba a mirar que la variable GDFONTPATH apunte correctamente al directorio donde están las fuentes.