Contenido

Cuidado con los saltos de línea en el código

22 May

+ 11

Desde AyudaWordpress nos comentan las peripecias que tuvieron que realizar para solucionar unos problemas con Wordpress 2.5.1. Todos ellos debidos a un pequeño salto de línea despues del código de finalización de PHP.

<?php
.. codigo ..
?>
(Salto de línea)

Esto generamente se debe a un problema de configuración del servidor web. Yo tuve problemas similares al cambiar de Apache a Nginx, scripts que habían funcionado perfectamente, dejaban de hacerlo únicamente por que Nginx lanza las peticiones PHP contra el sistema y Apache no.

Esto demuestra que no solamente hemos de ser cuidadosos con el código que hacemos, con el consumo de memoria y recursos, sinó que además hemos de tener especial cuidado en los saltos de línea para evitar problemas de estos. Nunca podemos saber en que servidor acabará usandose nuestra aplicación, por ese motivo hemos de ser lo más cuidadoso posible.

Para que luego vengan los clientes y te digan “Pero si solo es programar….”.

madre mia! más de uno se estaría dando cabezazos cuando dieron con el problema … un “error” así es casi indetectable!

Y un error así se produce por pésima implementación, para algo están las guía de estilo, los VCS y los hooks (pre-commit :P)

Sencilla y bastante conocida solución: No cerrar la apertura del tag PHP, es decir, poner al final del documento

Los saltos de línea después de ‘?>’ en archivos de los que después se hace include o require, pueden causar muchos problemas también, por que es como printear algo y si luego quieres mandar cabeceras ( header(loca…); x ej. ) te dice que ya han sido enviadas.

Más de una vez me he vuelto loco buscándolos, incluso luego, cree un script para buscarlos.

Saludos.

La solución mas apropiada a esto es no cerrar el código php con ?>
De esta manera no se introduce ningún carácter mas luego de interpretar el script al hacer un include.

Esto pasa muchas veces cuando se necesita enviar un header pero antes incluir un archivo con este problema (espacio/s luego del ultimo ?>)

@Pablo Martinez:

¿La mas adecuada? Me parece una burrada.

Me parece mucho mejor solución controlar el buffer de salida con ob_start() por ejemplo. De esta forma da igual que hallan lineas en blanco por medio.

Entonces, ¿Hay que poner el salto de línea, o no?

No sabes la comida de coco que me pasé por este fallo en una tienda OsCommerce, me tiré horas!

Fallos como estos son los que dan rabia…

Sí, la mejor opción siempre es no cerrar con ?>. El uso de búferes consume recursos, y si haces las cosas bien no los necesitas. Es más, se incluye en muchas guías de estilo como la de Zend Framework

Bueno si eso pasa con los saltos de linea ojala no sea por que al código le dio hipo.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.


Cerrar
Enviar por Correo