Pregunta sobre Arreglando WordPress de Wordpress:

Por que es un error tener una etiqueta final en las funciones php

Un usuario preguntó 👇

Me encontré con el siguiente problema: he editado las funciones my.php y, mientras lo hacía, finalmente agregué

?>

que consideré que faltaba, para coincidir con el principio

Mientras ejecutaba mi aplicación, de repente recibí el mensaje de error «Las cookies están bloqueadas debido a una salida inesperada». Mientras buscaba este mensaje en Internet, encontré en varios lugares la sugerencia de eliminar la última etiqueta. De hecho, después de eliminar el ‘?>’, El mensaje de error desapareció.

Curiosamente, este problema solo ocurrió en la copia de mi aplicación que cargué en el sitio de mi ISP. La copia local utilizada para las pruebas (que se ejecuta bajo XAMPP) quedó perfectamente satisfecha con la etiqueta final.

Ahora mi pregunta: ¿Alguien puede explicar por qué este error podría resultar en una etiqueta coincidente (final), y si obtengo este error, por qué no buscarlo en XAMPP, pero en la versión cargada? ¿uno?

(@sterndata)

Moderador del foro y voluntario del equipo de apoyo

Hace 2 años, 6 meses

Porque tienes uno o más personajes después de él. ?>, luego la salida como se ejecuta el archivo functions.php. Estos se emiten demasiado pronto. Si no tienen una etiqueta de cierre, estos caracteres crean errores de sintaxis o se ignoran.

(@diondesigns)

Hace 2 años, 6 meses

Nunca debes usar cierres ?> etiquetado en un script PHP que no tiene la intención de generar HTML (como un archivo functions.php en un tema WP). Este es el por qué.

Excepto por la línea que termina en la constante PHP_EOL (y cualquier carácter que sea parte de PHP_EOL), todo el texto después de la ?> PHP considera que la etiqueta es una etiqueta HTML válida y se genera como HTML. Si aún no se han enviado encabezados / cookies, este texto extraño provocará un error similar al que vio.

La razón más probable por la que no vio este error en XAMPP pero lo hizo en su sitio es que está editando su archivo functions.php con un editor de Windows como el Bloc de notas. Linux utiliza un carácter de una sola línea (LF) para la terminación de la línea, que es el valor de la constante PHP_EOL. El Bloc de notas utiliza los dos caracteres estándar de Windows de CR / LF para la terminación de línea, que es el valor PHP_EOL en los sistemas Windows.

Entonces, lo que está sucediendo es que su sistema Linux ve el sitio CR / LF y genera ambos caracteres porque el carácter de comportamiento de retorno (CR) no es parte de PHP_EOL en Linux. Vale la pena mencionar que las funciones .php que usan terminales de línea LF del estándar Linux no generarán este error en Windows porque el carácter LF es parte de la constante PHP_EOL en Windows.

Espero que esto ayude a explicar lo que está sucediendo. FYI, he estado usando Notepad ++ en Windows durante muchos años y lo recomiendo encarecidamente. Puede crear / editar scripts PHP usando terminales de línea LF de Linux y crea / organiza archivos UTF-8 correctamente (otra limitación del Bloc de notas / Wordpad).

https://notepad-plus-plus.org/

(@rovf)

Hace 2 años, 6 meses

Gracias por lo conciso y comprensible. Ya usamos Notepad ++ en Windows, pero no pudimos terminar la línea con LF.

¿Solucionó tu problema??

0 / 0

Deja una respuesta 0

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *