Foros del Web » Programando para Internet » PHP »

Problemas de generación de xml con php, funciona en local pero en remoto no

Estas en el tema de Problemas de generación de xml con php, funciona en local pero en remoto no en el foro de PHP en Foros del Web. Hola a todos saludos desde venezuela mi problema es el siguiente: tengo u script que me genera un archivo xml desde datos de una base ...
  #1 (permalink)  
Antiguo 22/12/2009, 08:27
 
Fecha de Ingreso: diciembre-2009
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 0
Problemas de generación de xml con php, funciona en local pero en remoto no

Hola a todos saludos desde venezuela mi problema es el siguiente:

tengo u script que me genera un archivo xml desde datos de una base de datos a través de php, es decir, se conecta a la base de datos y por medio de un juego de registros y un loop me extrae los datos que necesito para mi xml, el problema surge cuando lo subo al servidor de mi proveedor de hosting dicho archivo y lo ejecuto y me da el siguiente error:
Parse error: syntax error, unexpected T_STRING in /home/sa001033/public_html/galeras.php on line 45

ubico la línea del error en el archivo y es referente a : <?xml version="1.0" encoding="iso-8859-1"?>

en mi servidor local lo pruebo y funciona correctamente, mientras que en el del proveedor no, el script completo es de la siguiente forma, cualquier ayuda bienvenida es:
Código PHP:
Ver original
  1. [PHP]
  2. <?php require_once('Connections/datos.php'); ?>
  3. <?php
  4. if (!function_exists("GetSQLValueString")) {
  5. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  6. {
  7. $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  8.  
  9. $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  10.  
  11. switch ($theType) {
  12. case "text":
  13. $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  14. break;
  15. case "long":
  16. case "int":
  17. $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  18. break;
  19. case "double":
  20. $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
  21. break;
  22. case "date":
  23. $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  24. break;
  25. case "defined":
  26. $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  27. break;
  28. }
  29. return $theValue;
  30. }
  31. }
  32.  
  33. mysql_select_db($database_datos, $datos);
  34. $query_sumitogaol = "SELECT * FROM galerias WHERE cliente_id = '1'";
  35. $sumitogaol = mysql_query($query_sumitogaol, $loubidatos) or die(mysql_error());
  36. $row_sumitogaol = mysql_fetch_assoc($sumitogaol);
  37. $totalRows_sumitogaol = mysql_num_rows($sumitogaol);
  38. //Enviar las cabeceras
  39. header('content-type: text/xml');
  40. header('Pragma: public');
  41. header('Cache-control: private');
  42. header('Expires: -1');
  43.  
  44.  
  45. ?>
  46. <?xml version="1.0" encoding="iso-8859-1"?>
  47. <galerias>
  48. <?php do { ?>
  49. <productos>
  50. <foto_id><?php echo $row_sumitogaol['foto_id']; ?></foto_id>
  51. <nombre_archivo><?php echo $row_sumitogaol['nombre_archivo']; ?></nombre_archivo>
  52. <ancho><?php echo $row_sumitogaol['descripcion_foto']; ?></ancho>
  53. <alto><?php echo $row_sumitogaol['alto']; ?></alto>
  54. <cliente_id><?php echo $row_sumitogaol['cliente_id']; ?></cliente_id>
  55. </productos>
  56. <?php } while ($row_sumitogaol = mysql_fetch_assoc($sumitogaol)); ?>
  57.  
  58. </galerias>
  59.  
  60. <?php
  61. mysql_free_result($sumitogaol);
  62. ?>[/PHP]
  #2 (permalink)  
Antiguo 22/12/2009, 09:30
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Problemas de generación de xml con php, funciona en local pero en remoto n

Probablemente el servidor de tu proveedor tiene activada la directiva short_open_tags (<?) y al leer la etiquera de xml la toma como apertura de php y no reconoce el codigo siguiente por lo qe marca el error. Una solucion es imprimir esa linea desde php.
  #3 (permalink)  
Antiguo 22/12/2009, 09:43
Avatar de Ing_FOFO  
Fecha de Ingreso: agosto-2008
Ubicación: Guatemala
Mensajes: 104
Antigüedad: 15 años, 8 meses
Puntos: 8
Respuesta: Problemas de generación de xml con php, funciona en local pero en remoto n

correcto, el piensa que vas a escribir codigo PHP, y no reconoce lo que escribiste; obviamente los servidores linux son mas exigentes en ese sentido.

simplemente cambia esa linea

<?xml version="1.0" encoding="iso-8859-1"?>
por esta

echo '<?xml version="1.0" encoding="iso-8859-1"?>';
__________________
Si te ayude.... regalame un poquito de karma!!!

Los intelectuales resuelven los problemas; los genios ,los evitan.
Albert Einstein (1879-1955)
  #4 (permalink)  
Antiguo 22/12/2009, 09:48
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Problemas de generación de xml con php, funciona en local pero en remoto n

Cita:
Iniciado por Ing_FOFO Ver Mensaje
correcto, el piensa que vas a escribir codigo PHP, y no reconoce lo que escribiste; obviamente los servidores linux son mas exigentes en ese sentido.

simplemente cambia esa linea

<?xml version="1.0" encoding="iso-8859-1"?>
por esta

echo '<?xml version="1.0" encoding="iso-8859-1"?>';
Eh? Eso que tiene que ver? La directiva short_open_tags de php es la que causa eso, independientemente del SO...
  #5 (permalink)  
Antiguo 22/12/2009, 09:57
Avatar de Ing_FOFO  
Fecha de Ingreso: agosto-2008
Ubicación: Guatemala
Mensajes: 104
Antigüedad: 15 años, 8 meses
Puntos: 8
Respuesta: Problemas de generación de xml con php, funciona en local pero en remoto n

Cita:
Iniciado por darkasecas Ver Mensaje
Eh? Eso que tiene que ver? La directiva short_open_tags de php es la que causa eso, independientemente del SO...


No tiene nada ke ver, simplemente quise decir que en Linux uno tiene que ser muy cuidadoso porque es mas riguroso en cuanto a la sintaxis, de caracteres especiales etc etc etc.

__________________
Si te ayude.... regalame un poquito de karma!!!

Los intelectuales resuelven los problemas; los genios ,los evitan.
Albert Einstein (1879-1955)
  #6 (permalink)  
Antiguo 22/12/2009, 10:46
 
Fecha de Ingreso: diciembre-2009
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problemas de generación de xml con php, funciona en local pero en remoto n

excelente funcionó, era eso lo que faltaba. muchas gracias por la rapidez y la efectividad. otra pregunta más, resulta que para convertir ese archivo en .xml estoy haciendo uso de un script que usa curl y el código va así:

Código PHP:
Ver original
  1. <?php
  2. $url = 'http://localhost/mipagina.com/galerias.php';
  3. // Abrir la sesion cURL
  4. if ($sesion = curl_init($url)) {
  5.   // Bloquear las cabeceras HTTP, y obtener sólo XML
  6.   curl_setopt($sesion, CURLOPT_HEADER, false);
  7.   curl_setopt($sesion, CURLOPT_RETURNTRANSFER, true);
  8.   // Obtener el feed remoto
  9.   $remoto = curl_exec($sesion);
  10.   // Cerrar la sesión cURL
  11.   curl_close($sesion);
  12.   // Enviar una cabecera XML y mostrar el feed
  13.   if ($remoto) {
  14.     $archivoxml = 'archivo.xml';
  15.     require('escribir_archivo.inc.php');
  16.     escribirEnArchivo($remoto, $archivoxml);
  17.     }
  18.   else {
  19.     echo "No se encontró contenido en $url";
  20.     }
  21.   }
  22. else {
  23.   echo "No se pudo iniciar sesión";
  24.   }
  25. ?>

y el código del require para escribir archivo:
Código PHP:
Ver original
  1. <?php
  2. // función para sobrescribir el contenido en un archivo
  3. function escribirEnArchivo($contenido, $archivoDestino) {
  4.   // abrir el archivo preparado para escribir
  5.   if (!$archivo = fopen($archivoDestino, 'w')) {
  6.     echo "No se pudo crear $archivoDestino";
  7.     exit;
  8.     }
  9.   // escribir el contenido al archivo
  10.   if (fwrite($archivo,$contenido) === false) {
  11.     echo "No se pudo escribir en $archivoDestino";
  12.     exit;
  13.     }
  14.   echo "Correcto: contenido actualizado en $archivoDestino";
  15.   // cerrar el archivo
  16.   fclose($archivo);
  17.   }
  18. ?>

todo lo hace bien pero al formar el nuevo archivo, igualmente en el servidor local lo crea perfecto mientras que en el servidor web me sale error de lectura, y sintaxis
  #7 (permalink)  
Antiguo 22/12/2009, 10:54
Avatar de Ing_FOFO  
Fecha de Ingreso: agosto-2008
Ubicación: Guatemala
Mensajes: 104
Antigüedad: 15 años, 8 meses
Puntos: 8
Respuesta: Problemas de generación de xml con php, funciona en local pero en remoto n

Hola, me alegro que te haya funcionado.

1. Que errores te tira?
2. Esta la libreria activa en el servidor PHP? ver phpinfo.php
2. Que version de PHP tienes en el servidor web?

Saludos
__________________
Si te ayude.... regalame un poquito de karma!!!

Los intelectuales resuelven los problemas; los genios ,los evitan.
Albert Einstein (1879-1955)
  #8 (permalink)  
Antiguo 22/12/2009, 11:01
 
Fecha de Ingreso: diciembre-2009
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problemas de generación de xml con php, funciona en local pero en remoto n

Error de lectura XML: error de sintaxis
Ubicación: http://lmipagina.com/mifeed2.xml
Número de línea 1, columna 50:<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
-------------------------------------------------^

pues si está habilitado el Curl. es php 2.0
  #9 (permalink)  
Antiguo 23/12/2009, 08:43
 
Fecha de Ingreso: diciembre-2009
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problemas de generación de xml con php, funciona en local pero en remoto n

si tengo habilitado la libreria curl, y la versión de php es 5.2.0, pero le doy y le doy y no me funciona en el server remoto,(el cual es linux) mientras que en mi server local si funciona bien... pensando en otra alternativa será que es más fácil hacer que ese archivo.php que me genera la consulta a la base de datos formando el xml (este xml formado aun es un archivo.php) le colocase un código adicional para que me convierta de una vez en un archivo.xml por ejemplo:

$file=fopen("archivo.xml","w+");
fwrite ($file,$datosxml);
fclose($file);
?>

mi pregunta es: ¿cómo hago para insertarlo como parte del script anterior, es decir, el problema inicial que tenía era que pues me generaba un error en el <?xml version="1.0" encoding="iso-8859-1"?>, con la ayuda anterior se solucionó, quedando el script así:


//este código es el mismo que está de primero de esta pregunta del foro solo que aquí introduzco en los comentarios mis preguntas

...<?php código de conexión a base de datos y de juego de registro ?>...

//enviar las cabeceras
header ('Content-type: text/xml');
header ('Pragma: public');
header ('Cache-control: private');
header('Expires: -1');
echo '<?xml version="1.0" encoding="iso-8859-1"?>';
// para que funcionara le coloqué el echo y lo moví antes de la llave de cierre de php
?>

<galerias>

<?php do { ?>
<productos>
<foto_id><?php echo $row_sumitogaol['foto_id']; ?></foto_id>
<nombre_archivo><?php echo $row_sumitogaol['nombre_archivo']; ?></nombre_archivo>
<ancho><?php echo $row_sumitogaol['descripcion_foto']; ?></ancho>
<alto><?php echo $row_sumitogaol['alto']; ?></alto>
<cliente_id><?php echo $row_sumitogaol['cliente_id']; ?></cliente_id>
</productos>
<?php } while ($row_sumitogaol = mysql_fetch_assoc($sumitogaol)); ?>

</galeria>

//aquí es donde me imagino podría colocar el código para que me guarde todo en un xml
//pero no sé como hacer para guardar el resultado del loop anterior en una variable por ejemplo $datosxml
// $file=fopen("archivo.xml","w+");
// fwrite ($file,$datosxml);
//fclose($file);

<?php
mysql_free_result($sumitogaol);
?>

por favor alguien quien me ayude, a solucionar esta diatriba
  #10 (permalink)  
Antiguo 23/12/2009, 08:53
Avatar de Ing_FOFO  
Fecha de Ingreso: agosto-2008
Ubicación: Guatemala
Mensajes: 104
Antigüedad: 15 años, 8 meses
Puntos: 8
Respuesta: Problemas de generación de xml con php, funciona en local pero en remoto n

Checate este post

http://www.forosdelweb.com/f26/creac...on-php-298533/

Saludos
__________________
Si te ayude.... regalame un poquito de karma!!!

Los intelectuales resuelven los problemas; los genios ,los evitan.
Albert Einstein (1879-1955)
  #11 (permalink)  
Antiguo 24/12/2009, 07:45
 
Fecha de Ingreso: diciembre-2009
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problemas de generación de xml con php, funciona en local pero en remoto n

revise el post, y esta muy bueno, sin embargo, me es difícil tratar de aplicarlo a mi contexto, pues el array que tiene es un array donde se elabora etiquetas y valor, siguiendo las indicaciones del loop while, el problema no sería problema si el juego de registros que tengo solo me diese un valor, para cada item, es decir uno para "foto_id", "nombre_archivo" etc. pero como necesito rescatar todos los valores de la base de datos que son aproximadamente 10 por cada item, he allí donde se complica, no sé si me hago entender?

no sé si me es mas complicado irme por allí por lo cual supongo que tendría que colocar (basado en el script del post que me recomendás) en el arreglo unas variables que posteriormente me recuperen de otro array con los valores de la base de datos, pero no lo logor visualizar bien.

retomando el modo en que lo estaba haciendo con el uso de Curl, no entiendo porque si me funciona en el server local, me genera el archivo perfectamente mientras que cuando lo subo al servidor web, me genera el archivo.xml pero con errores. pareciera que no envía de forma correcta las cabeceras o algo así.

el archivo xml creado muestra el siguiente cod:
Código XML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
  2. <HTML><HEAD>
  3. <TITLE>404 Not Found</TITLE>
  4. </HEAD><BODY>
  5. <H1>Not Found</H1>
  6. The requested URL /galerias.php was not found on this server.<P>
  7. <P>Additionally, a 404 Not Found
  8. error was encountered while trying to use an ErrorDocument to handle the request.
  9. <HR>
  10. <ADDRESS>Apache/1.3.41 Server at localhost Port 80</ADDRESS>
  11. </BODY></HTML>
  #12 (permalink)  
Antiguo 24/12/2009, 08:33
 
Fecha de Ingreso: diciembre-2009
Mensajes: 15
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problemas de generación de xml con php, funciona en local pero en remoto n

yahoo!! ya lo resolví, sólo tuve que cambiar la dirección url del archivo que tiene el código del curl, mientras que en local funcionaba $url = 'http://localhost/mipagina.com/galerias.php'; en el servidor tuve que quitarle lo de localhost, quedando $url = 'http://mipagina.com/galerias.php';
  #13 (permalink)  
Antiguo 28/12/2009, 14:13
Avatar de Ing_FOFO  
Fecha de Ingreso: agosto-2008
Ubicación: Guatemala
Mensajes: 104
Antigüedad: 15 años, 8 meses
Puntos: 8
De acuerdo Respuesta: Problemas de generación de xml con php, funciona en local pero en remoto n

Que me alegro, si suele pasar!!! Uno siempre se va por la camino mas dificil pero en fin, me alegro; ya sabes cualquier cosa estamos a la orden
__________________
Si te ayude.... regalame un poquito de karma!!!

Los intelectuales resuelven los problemas; los genios ,los evitan.
Albert Einstein (1879-1955)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 17:03.