miércoles, 2 de abril de 2008

Malditos errores: CakePHP y PHP 4

Vale, pues resulta que acabo de subir una aplicación al servidor del trabajo para las primeras pruebas "reales" de funcionamiento. Resulta que la máquina de desarrollo tiene PHP 5 y la de producción 4 (las actualizaciones no son lo mío...). Después de algunos ajustes básicos del Apache la aplicación empieza a funcionar excepto algunas partes... Hum...

Básicamente, me fallaba no haber añadido el "apaño" que hace CakePHP para compatibilidad con PHP 4 de añadir la variable $name a los modelos. Es decir, en mi caso:

class RolesTarea extends AppModel {
var $name = 'RolesTarea';
...
}


El problema principal es que este tipo de fallos son muy desconcertantes. De hecho, CakePHP no conseguía siquiera mostrar un error.

5 comentarios:

Nate Todd dijo...

This is because PHP 4 returns class names in lowercase which breaks camel-case. Cake maintains compatibility with PHP 4 by using the $name variable.

Frankie dijo...

Yes, and works well for me.

My issue here is the non-informative error that throws. At first, I was convinced that it was a problem with the server itself (misconfiguration).

I finally manage to isolate the error in a call to App:import and then I saw the light.

Quest dijo...

Yo creo que lo mejor en estos casos, es programar para ambas versiones, o sea piensa en php4 y de seguro funcionara en php5 sin problemas.

Por desgracia hoy en dia no todos los servidores tienen php5 instalado, aunque esa situacion ha estado cambiando.

En fin, yo por mi parte me tomo todas esas precauciones, independiente de que en mi equipo tenga php5 y en el servidor tb, pero asi es mas facil tener que migrar.

Saludos

Frankie dijo...

En mi caso particular es importante programar para 4 y 5 debido a que quiero reutilizar partes de la aplicación en diferentes sitios (alguno con 4 otros con 5).

De todos modos, lo molesto de estos errores es que al principio resultan difíciles de localizar, ya que normalmente no dan pistas sobre lo que está pasando.

Aparte, no siempre eres consciente de ellos. En este caso la clase "problema" era necesaria para modelizar una relación habtn, por lo cual apenas había escrito la declaración y las relaciones correspondientes.

Anónimo dijo...

Buenos días Fran,

Pues ahora estoy yo en ello, jeje. A ver cómo sale esto de subir el proyecto Cake. Menos mal que has documentado algo ;-) ¡Un saludo!

Jordi