Asier Marqués

Hablando sobre tecnologías web y otras cosas que me interesan

Archivo de la categoría 'PHP'...

Archivado bajo Desarrollo Web, PHP

FirePHP es una extensión para Firebug, que combinándola con una clase php que usemos en el lado del servidor, nos permite ver y crear trazas de errores en el mismo.

Dispone de integración para la mayoría de los frameworks de php, algunos cms como Drupal y un protocolo propio que permite crear librerías para otros lenguajes que se puedan comunicar con el plugin para FireBug.

FirePHP

Comentarios (1) Posted by Asier Marqués on Martes, Septiembre 2nd, 2008

Archivado bajo Desarrollo Web, Microsoft, PHP, Sistemas

La próxima versión de php incluirá una serie de cambios generales, como la introducción de namespaces por ejemplo, que afectarán a todos las versiones de los diferentes sistemas operativos.

Pero en la versión para Microsoft Windows se incluyen una serie de cambios que debemos conocer los que desarrollamos bajo esta plataforma.

- Sólo serán soportados Windows 2000, XP, Server 2003, Vista y Server 2008. Se elimina el soporte para Windows 98, ME, and NT.

- Las nuevas versiones de php a partir de esta versión usarán el compilador VC9 (Microsoft Visual C++ 2008) por lo que requiere la librería msvcr90.dll. Si usas el instalador oficial, este incluirá dicha librería automáticamente.

Por razones de compatibilidad con algunas extensiones y con el servidor web Apache, durante las versiones php5.3.x se tendrá que utilizar la versión compatible con VC6, el cual data de 1998. En las siguientes versiones de php éste solo podrá ser compilado con VC9.

- Se incluirán versiones de 64 bits pero tendrán un soporte experimental por el momento.

- Las extensiones PECL no serán incluidas en php hasta que el nuevo sistema de compilado de PECL funcione correctamente.

- Los binarios se publicarán al mismo tiempo que el código fuente.

Comentarios (0) Posted by Asier Marqués on Jueves, Agosto 28th, 2008

Archivado bajo Desarrollo Web, Innovación, PHP

Johannes Schlüter se ha programado una extensión para php, que captura los errores generados en una aplicación web y los publica en twitter.

Este es un posible uso muy inteligente de Twitter, ya que si pensamos en la eficaz que sería dicho servicio web usado como monitorización de errores, podemos ver una aplicación profesional y de gran utilidad al concepto de microblogging.

Lo vemos en un ejemplo

Imagina un equipo de 4 desarrolladores, y que cada uno tuviese una cuenta de twitter. Se crea una cuenta en twitter de usuario adicional, pero con el perfil privado. Esta cuenta es a la que se envían todos los mensajes de error de nuestra aplicación en producción.

Cuando la aplicación en producción genere un error inmediatamente el perfil de nuestro usuario se actualiza, avisando a nuestros 4 desarrolladores responsables de nuestro proyecto.

Los avisos les llegarían a su cliente de mensajería instantánea y al teléfono móvil. De esta forma controlarían cuando su sitio web esta caído y pueden llevar el seguimiento de los errores en el sitio.

Es posible que un servicio profesional especializado en este tipo de cosas, sea un proyecto útil e interesante para desarrollar. Pensaré en ello…

Comentarios (2) Posted by Asier Marqués on Jueves, Agosto 28th, 2008

Archivado bajo Desarrollo Web, Innovación, PHP, Sistemas, UNIX / Linux

A veces tenemos que generar sintetizar texto a voz en nuestras aplicaciones web para usuarios con problemas de visión, mejorar la experiencia del usuario en general o realizar cualquier otra tarea.

En Linux/UNIX tenemos una serie de herramientas que nos pueden ayudar a realizar esta tarea. En este tutorial de Tony Bhimani podemos ver como usar el sintetizador de voz Festival con un encoder MP3 para generar archivos dinámicamente desde texto, con una aplicación web php.

Necesitamos tener instalado Festival y Lame MP3 Encoder para que todo esto funcione. Tony ha dejado un ejempo de cómo sería un frontend básico pero funcional para conseguirlo.

Comentarios (0) Posted by Asier Marqués on Lunes, Agosto 25th, 2008

Archivado bajo Bases de Datos, Desarrollo Web, Frameworks, Microsoft, PHP, Sistemas, Trucos

En la actual versión de symfony se usa Propel junto a Creole para crear un orm y una capa de abstracción entre la base de datos y el resto de nuestra aplicación.

Esto nos permite desarrollar aplicaciones independientes del motor de base de datos que usemos.

Php utiliza oficialmente la librería mssql para conectarse a una base de datos Sql Server y aunque existe una opción mejor por parte de Microsoft en fase CTP, Propel (y por lo tanto Symfony) la utilizan para conectarse a este tipo de motor.

Sin embargo, para conseguir conectarse y operar con éxito con Sql Server 2005 hay que hacer una serie de configuraciones en php/symfony y hacks en creole.
(Espero que no os siente esto como un cubata de Baileys con tonica : )

Vamos a verlo paso por paso:

1- Actualizar la librería ntwdblib.dll a la versión 2000.80.194.0.

2- Activar las extensiones php_mssql y php_xsl en el php.ini.

Adicionalmente debemos indicar los siguientes parámetros para php_mssql:

mssql.datetimeconvert = 0
mssql.textlimit = 2147483647
mssql.textsize = 2147483647

3- Crear nuestra base de datos en Sql Server y asignar el login y permisos adecuados al usuario que usemos para conectarnos.

4- Editar el archivo schema.yml con nuestro esquema de base de datos.

5- Configurar la conexión a la base de datos:

[ruta_completa]\symfony.bat configure:database
“mssql://usuario:password@equipo\instancia/nombre_baseDatos”

6- Construir el modelo orm de symfony:

[ruta_completa]\symfony.bat propel:build_model

7- Editar el fichero MSSQLConnection.php ubicado en \lib\plugins\sfPropelPlugin\lib\vendor\creole\drivers\mssql dentro del directorio de symfony.

En el caso de que no se especifique un puerto en el string de conexión a la base de datos, creole te inserta el valor de puerto predeterminado para sql server. Sin embargo, en Sql Server 2005 esto provoca un fallo impidiendo realizar una conexión exitosa a la base de datos.

Para evitar que creole nos meta el puerto si o si, debemos modificar la siguiente secuencia de control en MSSQLConnection.php:

if(!empty($dsninfo['port'])) {
$dbhost .= $portDelimiter.$dsninfo['port'];

}

//*else {
//$dbhost .= $portDelimiter.’1433′;
// }

Con estas modificaciones ya deberíamos poder trabajar con sql server 2005 desde symfony.

Comentarios (0) Posted by Asier Marqués on Miércoles, Julio 16th, 2008

Archivado bajo Desarrollo Web, Frameworks, Microsoft, PHP, Servidores Web, Sistemas

Desde hace algún tiempo he estado leyendo sobre varios frameworks de desarrollo con php, que me permitiesen de una forma fiable automatizar trabajo que, a pesar de no tener una dificultad notable para alguien que sepa programar, te hace perder un montón de tiempo si quieres hacer las cosas bien.

La opción que más me ha gustado para php es sin duda Symfony y puesto que desarrollo tanto para plataformas UNIX/Linux como para sistemas Microsoft, me interesé por hacerlo funcionar e incluso utilizarla en proyectos que actualmente me encuentro desarrollando bajo sistemas Microsoft.

Voy a detallar como es una instalación de Symfony en IIS. Yo lo tengo funcionando sobre 2003 Server SP2 con IIS6

1 - Se descarga el código fuente de Symfony y se descomprime en un directorio en una de las unidades de disco duro del servidor. (Supongamos D:\symfony)

2 - Se crea un directorio cuyo contenido será el que usemos como sitio web. (Supongamos D:\dir_proyecto)

3 - Abrimos un terminal, nos situamos en “dir_proyecto” y ejecutamos lo siguiente para crear un proyecto:

D:\symfony\data\bin\symfony.bat init-project nuevo_proyecto

Ahora creamos una primera aplicación para ese proyecto:

D:\symfony\data\bin\symfony.bat init-app nueva_aplicacion

4 - Creamos un sitio web nuevo que apunte al directorio “D:\dir_proyecto\web”.

5 - Dentro del ese nuevo sitio web, creamos un directorio virtual que apunte a “D:\symfony\data\web\sf”

6 -  Si usamos isapi rewrite necesitamos ahora aplicar las reglas de redirecciones para nuestro sitio web. En la documentación oficial nos comentan una serie de reglas específicas para entornos de IIS. Esas reglas pueden darnos problemas a la hora de acceder a los archivos del directorio “D:\symfony\data\web\sf”.

Para evitar estos problemas, debemos ser fieles a las reglas definidas en el .htaccess que se ha creado en el directorio “D:\dir_proyecto\web” y añadir las reglas de seguridad relativas a entornos Microsoft.

Las reglas de redireccionamiento quedarían de la siguiente forma:
RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]

RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule (.*) /index.php [L]

Con esto ya deberíamos comprobar que todo funciona correctamente.

Comentarios (9) Posted by Asier Marqués on Martes, Julio 15th, 2008

Archivado bajo Desarrollo Web, PHP, Servidores Web, Sistemas, Trucos

Muchos os habréis fijado en servicios web que usan subdominios dinámicos (wildcard) para las cuentas de sus usuarios, como por ejemplo jaiku.

Sin embargo, una vez configurados los subdominios dinámicos, tenemos un serio problema y es que, las variables de sesión por defecto se pierden cada vez que ejecutamos la aplicación web desde un subdominio distinto al que hemos utilizado para crear dicha variable de sesión.

Podemos comprobar esto en algunos sitios web que no usan subdominios dinámicos pero, si hacemos login en su www.dirección.com, si después vamos a su dirección.com sin las ‘www’ nos encontramos con que no hemos iniciado sesión. El problema es similar y tiene la misma solución que en el caso de los wildcard domains.

Voy a explicar cómo solucionar este problema y como hacer funcionar subdominios dinámicos.

Los pasos:

1 - Configurar el dns

2 - Configurar el servidor web

3 - Configurar bien el ámbito de las variables $_SESSION en la aplicación php para que se compartan las variables de sesión entre los subdominios.

Configurar el dns.

Basta con crear una entrada tipo host es decir, “A” apuntando a *.tudominio.com . También vale con crear un CNAME * apuntando al registro A del dominio principal (”tudominio.com”).

Si hacemos un ping a “loquesea.tudomino.com” debería ya resolver (a menos que tengas capado el tráfico ICMP claro)

Configurar el servidor web.

En Apache httpd, debemos configurar en el vhost de nuestro dominio un ServerAlias que atienda a “*.midominio.com”

En Nginx, debemos configurar en la sección Server un valor server_name como “*.midominio.com”

En IIS, debemos dejar un sitio virtual sin headers y ese es el que atenderá las peticiones de vuestro wildcard dns, es la única forma.

Se ha discutido sobre este tema en el foro oficial de IIS y según los propios desarrolladores, aunque ha sido demandada durante años, no se piensa implementar dicha funcionalidad por ahora, ni siquiera en IIS7.

Nota: sólo podemos disponer de un sitio web sin headers por servidor web IIS.

Configurar nuestras variables de $_SESSION en php

El truco esta en configurar la directiva session.cookie_domain como “.midominio.com” (importante el . delante del dominio).

Podéis hacerlo en tiempo de ejecución, antes de llamar a session_start(); siempre que tengamos deshabilitado el autoarranque de sesiones en el php.ini (como es lógico y viene por defecto)

ini_set("session.cookie_domain",".midominio.com");
session_start();

Ahora ya podéis crear servicios web tan útiles como este.

Comentarios (0) Posted by Asier Marqués on Viernes, Junio 27th, 2008

Archivado bajo Desarrollo Web, PHP

PHP/Java Bridge es un protocolo de red basado en xml desde el cual se nos permite acceder a componentes CLR (VB.NET, C#, COM) o Java (Java, KAWA, JRuby) e instanciarlas desde php y al revés, de una forma transparente.

Lo podemos ver en este ejemplo:

$Object = java("java.lang.Object");
$obj = $Object->newInstance();


$Thread = java(”java.lang.Thread”);
$Thread->sleep(10);

En concreto dentro del entorno Java, si tenemos un backend corriendo J2EE, las sesiones entre el mismo y nuestro frontend en php se comparten de forma transparente (Desde php con una simple llamada $session = java_session();). Lo mismo ocurre con las funciones de balanceo de carga y clustering.

Comentarios (1) Posted by Asier Marqués on Miércoles, Junio 4th, 2008

Archivado bajo Desarrollo Web, PHP, Trucos

Por defecto, 1and1 en hosting compartido ejecuta los scripts php con la versión php4.

Para que los procese como php5, debemos añadir lo siguiente al principio de un archivo .htaccess, en el directorio de nuestra aplicación:

AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php

Comentarios (0) Posted by Asier Marqués on Sábado, Mayo 31st, 2008

Archivado bajo Desarrollo Web, PHP, javaScript

Stephan Schmidt, desarrollador responsable de php-tools.net, ha publicado en stubbles.org una presentación en la que nos explica como desarrollar un proxy JSON-RPC usando para conseguirlo, un backend escrito en php con la ayuda de la api Reflection.

Comentarios (0) Posted by Asier Marqués on Miércoles, Mayo 28th, 2008