Libreria Mcrypt de apache

Al instalar esta librería en Mac con un port install php53-mysql o en Ubuntu con un apt-get install php5-mcrypt, y tras reiniciar el apache a veces no nos funciona, y lo vemos porque no sale en un phpinfo o simplemente porque nos da error al cargar la librería.

El problema es que en lugar de dejar la librería mcrypt.so en el sitio por defecto donde php (por ejemplo /opt/local/lib/php/extensions/no-debug-non-zts-20090626/) va a buscarlo deja las librerías en otro directorio, /opt/local/lib/php53/extensions/no-debug-non-zts-20090626/

La solución pasa por modificar el php.ini para añadir un directorio de extensiones. Por ejemplo en Mac sería


extension_dir="/opt/local/lib/php53/extensions/no-debug-non-zts-20090626/"

Otra solución es crear enlaces simbólicos según las librerías instaladas en la carpeta por defecto. Para ello hacemos un ls de la carpeta y vamos haciendo los enlaces simbólicos.


ls /opt/local/lib/php53/extensions/no-debug-non-zts-20090626/
ln -s /opt/local/lib/php53/extensions/no-debug-non-zts-20090626/mcrypt.so /opt/local/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so

Y si no nos queremos complicar nada, pues copiamos de una carpeta a otra .

cp /opt/local/lib/php53/extensions/no-debug-non-zts-20090626/* /opt/local/lib/php/extensions/no-debug-non-zts-20090626/

Para comprobar si funciona desde un terminal hacemos


php -m | grep mcrypt

Y ya sólo nos queda reiniciar el apache. Si nos siguiese dando problemas, deberíamos especificar las librerías en el fichero php.ini y en las extensiones añadir

mcrypt.so

Como siempre, espero que os sirva

Cambiar tipo mime de un fichero

Recientemente me ha pasado que algún editor modifica la codificación de un fichero como consecuencia si yo tengo un fichero .php que muestre una palabra con acentos y el encoding del fichero no coincide con el encoding que yo le estoy diciendo en el “meta”…pues problema al canto y caracteres raros por ahí…

El encoding se puede solucionar guardando el fichero en el encoding apropiado (algunos editores soportan esta opción) pero para linux (Mac) esta es la solución más sencilla que he encontrado.

Solución en linux:

Para identificar que encoding tiene un fichero concreto:

 $file --mime nombrefichero.php 

Esto nos produce una salida…

 nombrefichero.php:         text/plain; charset=iso-8859-1

Para reconvertir al formato que deseamos por ejemplo a utf-8:

  iconv -f iso-8859-1 -t utf-8 nombrefichero.php > nombrefichero_utf8.php

 

*NOTA: cuidado con intentar encodear un fichero formato ascii a utf-8 porque ascii ya es utf-8 por lo que la reconversión no se lleva a cabo.

Instalación de adAS en Ubuntu 12.04

El AdAS es un servidor de autenticación avanzado que realiza funciones de proveedor de identidad con un entorno gráfico de configuración integrado que facilita su administración, puesta en marcha y mantenimiento. El software de administración y gestión que se ofrece está escrito en PHP,  Se puede descargar de la web: http://www.adas-sso.com/es/  es opensource pero no tiene ninguna documentación de instalación o de uso, reservandose esta para el momento de contratación de servicios profesionales con la empresa, este aspecto es el que menos me ha gustado del producto que ha hecho que simplemente para verlo funcionando haya sido un proceso de prueba/error permanente.
Leer más

Problemas con los permisos en los directorios creados por apache

Hoy nos hemos encontrado con el problema de que apache crea directorios con permisos solo 750, a pesar de poner un 777 en el mkdir desde php. Se solucionaría con un umask antes del mkdir, pero nos restringiría las aplicaciones como wordpress, y tampoco nos interesa un script que cambiase los permisos por las noches, así que hemos estado un rato buscando la solución.

En nuestro Centos del servidor, tras mucho indagar, y cambiar el .profiles del usuario apache sin ningún resultado, hemos visto que la solución está en editar /etc/sysconfig/httpd añadiendo a final un “umask 0002” y reiniciar el apache. A partir de entonces crea los directorios con un 770 sin problemas.

Espero que os ayude!!

Problemas con la fecha en php

Si os aparece el error “PHP Warning:  date(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Europe/Berlin’ for ‘CEST/2.0/DST’ instead in” que me he encontrado en el php 5.3 se soluciona modificando en el php.ini tenemos que poner nuestra fecha por defecto:


[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
date.timezone = "Europe/Berlin";