mcrypt: Error al cargar el modulo php_mcrypt en windows

Estoy utilizando Ushahidi en un servidor apache-php5 en windows, con AppServ, el problema esta que me dice que requiere la libreria php_mcrypt para funcionar, y pues entro a php.ini, busco la linea donde dice: extension=php_mcrypt.dll y descomento la linea, reinicio el servicio con apache_servicefix.bat dentro de la carpeta c:/AppServ/Apache2.2/ pero el problema sigue.

Revisando el log de apache veo el siguiente error:

PHP Warning: PHP Startup: Unable to load dynamic library ‘C:/AppServ\\php5\\ext\\php_mcrypt.dll’ – No se puede encontrar el m\xf3dulo especificado.\r\n in Unknown on line 0

La solución esta en copiar el archivo libmcrypt.dll que esta dentro de c:/appserv/php5/libmcrypt.dll a c:/AppServ/Apache2.2/bin/ reiniciar el servicio y listo!.., ya tenemos correctamente instalada la libreria MCrypt de PHP

Apache: 403 Forbidden con Codeigniter

Siguiendo con el error 403 Forbidden en Apache con Codeigniter pues busqué y busqué la solución, ya que la que habia investigado antes pues era temporal, y despues de navegar por X número de páginas zaaas, vuelve a salir el error 403.

La solución sigue estando en la configuración de Apache2.0 y el módulo rewrite, primero modificamos el archivo en /etc/apache2/sites-enabled/000-default (u otro parecido)

< Directory />
Options FollowSymLinks SymLinksIfOwnerMatch
AllowOverride FileInfo
< /Directory>

Y despues en el .htaccess, o lo pueden poner en el otro archivo la siguiente info:

< IfModule mod_mime.c>
AddType text/html;charset=UTF-8 .html
< /IfModule>

< IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#’system’ can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

#When your application folder isn’t in the system folder
#This snippet prevents user access to the application folder
#Submitted by: Fabdrol
#Rename ‘application’ to your applications folder name.
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn’t true it sends the
#request to index.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} !^(/index\.php|/img|/js|/css|/kml|/robots\.txt|/favicon\.ico)

RewriteRule ^(.*)$ /index.php/$1 [L]
< /IfModule>

< IfModule !mod_rewrite.c>
# If we don’t have mod_rewrite installed, all 404’s
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin

ErrorDocument 404 /index.php
< /IfModule>

Donde dice UTF8 es para que todas las páginas HTML las mande con ese encoding, y la parte que creo es importante es donde se filtra el js, css, pero bueno!, ya con eso funciona bien el codeigniter y sin errores 403 forbidden.

Ushahidi en Nginx con url amigables

Para instalar Ushahidi en un servidor Nginx se requiere algo de configuración especial para que funcione al 100%., para eso creamos un sitio en /etc/nginx/sites-enabled lo llamaremos ushahidi en donde pondremos algo así:

server {
listen 80;
server_name ushahidi.oviedo.mx;
root /var/www/ushahidi;
index index.php;

# ROUTING TO USHAHIDI IF REQUIRED
location / {
try_files $uri $uri/ @ushahidi;
rewrite ^/(.*)$ /index.php/$1 break;
}

# BLOCKS ACCESS TO . FILES (.svn, .htaccess, …)
location ~ /\. {
deny all;
}

# FOR PHP FILES
location ~* \.php$ {
# PHP FILES MIGHT BE TO HANDLED BY USHAHIDI
try_files $uri $uri/ @ushahidi;

include fastcgi_params;
fastcgi_pass unix:/tmp/php.socket;
}

# HANDLES THE REWRITTEN URLS TO USHAHIDI CONTROLLER
location @ushahidi
{
include fastcgi_params;
fastcgi_pass unix:/tmp/php.socket;
}

# CACHE CONTROL FOR STATIC FILES
location ~* \.css|\.js|\.jpg|\.jpeg|\.png|\.gif|\.swf|\.svg|\.tiff|\.pdf$ {
expires 30d;
}
}

En negrita lo que deben de cambiar con la info de su servidor, igual puede que tengan algo diferente pero pues ya es una idea, como ushahidi esta basado en Kohana pues de ahi me vole las reglas y las adapte a mis necesidades

No olviden en la configuración del ushahidi application/config/config.php cambiar la linea donde dice: $config[‘index_page’] = ‘index.php’; por

$config[‘index_page’] = ”;

Para que funcionen bien las páginas.

Apache: 403 Forbidden

Algunas veces cuando estoy navegando en un sistema que realice el cual esta montado en Apache2 con URL amigables me aparecé el error 403 Forbidden y dice que no tiene privilegios para acceder al recurso.

Investigando un poco resulta que el problema esta con el modulo Rewrite de Apache ( mod_rewrite ) y la solución es habilitar enlaces simbolicos, teniendo nuestro .htaccess algo así:

< IfModule mod_rewrite.c>
Options +FollowSymLinks SymLinksIfOwnerMatch
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
< /IfModule>

Observen que se tiene la opción: +FollowSymLinks esto hace que el error 403 no aparezca más.

Y si estan usando CodeIgniter pues este código les sirve para tener URL amigables =)

Public NTP Secondary (stratum 2) Time Servers

A continuación se mostrará la lista de servidores NTP (Network Time Protocol) públicos de stratum 2

Estan clasificados en dos tipos basicamente (Por nivel de precision):

  • Stratum 1: sincronizan con fuentes de tiempo externas (relojes atómicos o radio-antenas).
  • Stratum 2: sincronizan con los Stratum 1.
  • Stratum n: Sincronizan con Stratum n-1 (siendo “n” 3 en el caso de sincronizar con un Stratum 2).

Continue reading

Public NTP Primary (stratum 1) Time Servers

A continuación se mostrará la lista de servidores NTP (Network Time Protocol) públicos de stratum 1

Estan clasificados en dos tipos basicamente (Por nivel de precision):

  • Stratum 1: sincronizan con fuentes de tiempo externas (relojes atómicos o radio-antenas).
  • Stratum 2: sincronizan con los Stratum 1.
  • Stratum n: Sincronizan con Stratum n-1 (siendo “n” 3 en el caso de sincronizar con un Stratum 2).

Continue reading

Servidores NTP públicos

A continuación se mostrará una lista de servidores NTP (Network Time Protocol) públicos.

Estan clasificados en dos tipos basicamente (Por nivel de precision):

  • Stratum 1: sincronizan con fuentes de tiempo externas (relojes atómicos o radio-antenas).
  • Stratum 2: sincronizan con los Stratum 1.
  • Stratum n: Sincronizan con Stratum n-1 (siendo “n” 3 en el caso de sincronizar con un Stratum 2).

Esta estructura gerárquica existe para no sobrecargar a los Stratum 1. Posiblemente sea mas preciso, un Stratum 2 cercano que un Stratum 1 lejano. Desde aqui yo te recomiendo un Stratum 2, si vas a trabajar con ellos solo de cliente. (deja los Stratum 1 para los que monten un Stratum 2.)

La lista fue extraida de http://kopernix.com/?q=ntp la cual fue extraida de http://www.eecis.udel.edu/~mills/ntp/clock2a.html jeje, otro respaldo más para internet.

Aquí las ligas para ver los Stratum 1 y los Stratum 2

Linux: Actualizar el horario automaticamente

Como ya sabrán el día de hoy se tiene que adelantar el reloj 1 hora por el “horario de verano”, pero que pasa si lo queremos hacer automaticamente y ademas siempre tener la hora exacta, la solución es NTP (Network Time Protocol), lo bueno que linux (y todos los sistemas operativos, lease Windows y Mac) tienen este protocolo.

Primero debemos de ver que hora es la actual, ejecutando el comando:

#date
Sun Apr 3 14:14:04 UTC 2011

Si se fijan me dice que la hora es del tipo UTC, pero nosotros la ocupamos especificamente de nuestro lugar, México.

para hacer ejecutamos el comando tzdata, en este caso lo vamos a reconfigurar:

# dpkg-reconfigure tzdata

1.- Nos pregunta el área geografica: America
2.- Buscamos Mexico_City

y listooo!.., al final nos aparece el cambio:

Current default time zone: ‘America/Mexico_City’
Local time is now: Sun Apr 3 09:14:53 CDT 2011.
Universal Time is now: Sun Apr 3 14:14:53 UTC 2011.

Si se fijan ahora dice CDT y no el horario universal, si vuelven a ejecutar date les aparecerá correcta la hora.

Ahora bien sigue la automatización de la hora, como les decia esta el protocolo NTP, y en linux existe un comando llamando ntp, para instalarlo sencillo:

#apt-get install ntp

y en el archivo /etc/ntp.conf buscamos la linea donde dice server, por default dice: server ntp.ubuntu.com (o depende de su distribución)

Podemos agregar algun servidor NTP que este cerca fisicamente de nuestra computadora.

# You do need to talk to an NTP server or two (or three).
server cronos.cenam.mx
server ntp.ubuntu.com

En este caso estamos utilizando el del Centro de Meteorología Nacional en México., en esta página podemos ver un listado de varios servidores, se recomienda utilizar el stratum 2 o stratum 1 http://kopernix.com/?q=ntp

Y listo! todo debe de funcionar al 100

PHP: la función imagefilter no es reconocida en PHP5

Estaba probando la creación de mapas de calor (heat map) con PHP y en mi maquina local todo funciona correcto para al pasarla al servidor saaz, error de PHP.

Fatal error: Call to undefined function imagefilter()

revisando la documentación de la función imagefilter dice que viene en la librería GD y PHP5, los 2 programas ya los tenia instalados, pero aún así no reconocía la función, e investigando dice que se ocupa instalar la libreria PHP5-GD Bundled (embedida o empaquetada), ya que la versión original fue desarrollada por Boutell.

Ahora al grano! a instalar la nueva librería, para eso la vamos a compilar todo a mano, jejeje:

apt-get update
apt-get install build-essential debhelper fakeroot
cd /usr/src
apt-get source php5
apt-get build-dep php5
cd php5-5.2.4

Recuerden cambiar la versión del PHP descargada, despues a modificar el archivo debian/rules

nano ./debian/rules

Buscamos la línea que diga:

–with-gd=shared,/usr –enable-gd-native-ttf \

Y la cambiamos por esta:

–with-gd=shared –enable-gd-native-ttf \

Ahora viene la parte tardadaaaaaa!!! a compilar todo,

dpkg-buildpackage -rfakeroot
cd ..
apt-get remove php5-gd
dpkg -i php5-gd_5.2.4-2ubuntu5.14_i386.deb

Reiniciamos apache y listo! la librería php5-gd debe de quedar OK!..

/etc/init.d/apache2 restart

Aca una imagen de como quedo el mapa de calor: