PHP - Comparación de archivos

 
Vista:
Imágen de perfil de Fran
Val: 27
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Comparación de archivos

Publicado por Fran (8 intervenciones) el 30/04/2021 09:56:00
Hola compañer@s,

estoy realizando unas pruebas de comparación e archivos. Motivo, no puedo subir a un FTP por normativa un archivo que no tenga alguna modificación.

Por lo tanto me he puesto a ver como se hace. Es relativamente sencillo, en local todas las pruebas me funcionan. Sin embargo ONLINE todas las pruebas me fallan.

He utilizado las siguientes funciones:

Prueba con md5_file en local funciona perfectamente y online falla
1
md5_file($json1) !== md5_file($json2)

Prueba con strcmp en local funciona perfectamente y online falla
1
strcmp(json_encode($json_a), json_encode($json_b))

Prueba con función de manual PHP en local funciona perfectamente y online falla
file_identical

Por favor, alguien me puede decir qué diferencia hay o que puedo estar haciendo mal?

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Comparación de archivos

Publicado por Mauro (1036 intervenciones) el 30/04/2021 16:51:35
Hola Fran!

Cuando dices "falla", ¿a qué te refieres exactamente? ¿Estás viendo algún error en particular?

Por otro lado, ¿verificaste que las versiones de php local y remota sean iguales?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fran
Val: 27
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Comparación de archivos

Publicado por Fran (8 intervenciones) el 01/05/2021 07:25:56
Cuando digo "falla" me refiero a que no lo hace bien, siempre dice que son diferentes aunque no lo sean.
Las versiones de PHP son iguales. Pero de alguna manera para PHP no es lo mismo analizar de esta manera un archivo local que online y no se de que manera solucionarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Comparación de archivos

Publicado por Mauro (1036 intervenciones) el 01/05/2021 21:30:28
Hola Fran:

Qué caso interesante el tuyo :)

¿Puede ser que estés usando un S.O. diferente en producción y en local? Alguna vez me ha pasado que la codificación de los enter por ejemplo es diferente en Windows y en Linux y eso hacía que se diera este tipo de problemas.

¿Cómo estás haciendo la comparación por fuera de php para determinar que los archivos son iguales?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Fran
Val: 27
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Comparación de archivos

Publicado por Fran (8 intervenciones) el 02/05/2021 08:15:07
Hola Mauro,
eso si es diferente, lo hago local en windows y online es linux.
Al final lo he solucionado con array_diff_assoc en función recursiva, obtengo los 2 json, el antiguo y el nuevo, los paso a array y los analizo con esta función recursivamente. De ello obtengo o bien un array vacío si no hay diferencias o bien un array con lo que hay de diferente.
Y parece que funciona.
Muchas gracias por tu interés.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Comparación de archivos

Publicado por Mauro (1036 intervenciones) el 03/05/2021 15:00:50
Hola Fran!

Que bueno que lo hayas resuelto :)

Seguramente era un tema de encoding de los archivos... En general te conviene trabajar siempre con el mismo entorno (S.O., versiones, etc...) en producción y en local.

Yo por eso siempre uso máquinas virtuales.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar