Foros del Web » Programando para Internet » PHP »

Problema con PHP en CentOS

Estas en el tema de Problema con PHP en CentOS en el foro de PHP en Foros del Web. Me está pasando lo siguiente, tengo una página en la cual necesito generar desde PHP un archivo XML el cual es levantado por una animación ...
  #1 (permalink)  
Antiguo 23/08/2010, 12:28
 
Fecha de Ingreso: julio-2010
Mensajes: 50
Antigüedad: 13 años, 9 meses
Puntos: 1
Problema con PHP en CentOS

Me está pasando lo siguiente, tengo una página en la cual necesito generar desde PHP un archivo XML el cual es levantado por una animación flash. Lo que hago es verificar lo que contiene el archivo que existe ya en el dominio bajo el nombre "banner.xml" y lo comparo con los resultados obtenidos desde base de datos y si los contenidos difieren elimino el existente y genero uno nuevo.

Ahora, no se si es un tema de permisos o que, pero no me está generando el archivo de nuevo. Yo tenía esta página alojada en otro servidor, y con los mismos permisos sobre el archivo y carpeta que tengo en el servidor actual y todo funciona normalmente.

Permisos sobre el archivo: rw-r--r--
Permisos sobre la carpeta donde se encuentra el archivo: rwxrwxr-x

El código con el que intento generar el archivo es el siguiente:

Código HTML:
function generate_file($filename, $extension, $content)
{
	$whole_filename = $filename.'.'.$extension;
	if(file_exists($whole_filename))
  	{
  		$file = fopen($whole_filename, 'w+');
		fwrite($file, $content);
  	}
  	else
  	{
		create_file($whole_filename, $content);
  	}
}

function create_file($filename, $content)
{
    $file = fopen($filename, 'x+');
  	fwrite($file, $content);
  	fclose($file);
}
Que es lo que puede estar fallando?

Gracias de antemano, saludos!
  #2 (permalink)  
Antiguo 23/08/2010, 12:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con PHP en CentOS

el código a simple vista parece correcto, sin embargo no podemos decir que ahí esta la causa de tu problema...

¿acaso no tienes activado el reporte de errores? ¿recibes algún error? ¿y que dice el log de errores?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 23/08/2010, 12:59
 
Fecha de Ingreso: julio-2010
Mensajes: 50
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Problema con PHP en CentOS

Cita:
Iniciado por pateketrueke Ver Mensaje
el código a simple vista parece correcto, sin embargo no podemos decir que ahí esta la causa de tu problema...

¿acaso no tienes activado el reporte de errores? ¿recibes algún error? ¿y que dice el log de errores?
Gracias por la respuesta pateketrueke.

Este es el error que aparece en el error.log

Cita:
[Mon Aug 23 11:07:25 2010] [error] [client 200.40.169.226] PHP Notice: Undefined variable: xml_content in /var/www/html/include/functions.php on line 229, referer: http://97.74.198.147/contacto.php
[Mon Aug 23 11:07:25 2010] [error] [client 200.40.169.226] PHP Warning: fopen(banner.xml) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: Permission denied in /var/www/html/include/functions_aux.php on line 143, referer: http://97.74.198.147/contacto.php
[Mon Aug 23 11:07:25 2010] [error] [client 200.40.169.226] PHP Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/html/include/functions_aux.php on line 144, referer: http://97.74.198.147/contacto.php

Saludos!
  #4 (permalink)  
Antiguo 23/08/2010, 13:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con PHP en CentOS

perfecto!!

ahora... ¿no esperas a que nosotros interpretemos los mensajes cierto?

porque bueno... son muy claros, y si no sabes ingles puedes usar un traductor en linea, ¿cierto?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 23/08/2010, 13:09
 
Fecha de Ingreso: julio-2010
Mensajes: 50
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Problema con PHP en CentOS

Cita:
Iniciado por pateketrueke Ver Mensaje
perfecto!!

ahora... ¿no esperas a que nosotros interpretemos los mensajes cierto?

porque bueno... son muy claros, y si no sabes ingles puedes usar un traductor en linea, ¿cierto?
Si, pero no está bien lo que me está respondiendo, en los archivos que nombra en el log, no hay errores.

Funciona correctamente tanto localmente como en el servidor que estaba antes, donde como dije en el primer mensaje, los permisos son los mismos tanto para la carpeta como para el archivo.

La verdad, no se cual pueda ser el problema.

Saludos!
  #6 (permalink)  
Antiguo 23/08/2010, 13:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con PHP en CentOS

Cita:
Iniciado por loqtor Ver Mensaje
Si, pero no está bien lo que me está respondiendo, en los archivos que nombra en el log, no hay errores.

Funciona correctamente tanto localmente como en el servidor que estaba antes, donde como dije en el primer mensaje, los permisos son los mismos tanto para la carpeta como para el archivo.

La verdad, no se cual pueda ser el problema.

Saludos!
amigo, de verdad... ¿entonces PHP inventa errores según tu afirmación?

veamos con calma:
Cita:
[Mon Aug 23 11:07:25 2010] [error] [client 200.40.169.226] PHP Notice: Undefined variable: xml_content in /var/www/html/include/functions.php on line 229, referer: http://97.74.198.147/contacto.php
ahora, ¿seguro que tienes activado el reporte de errores en todos tus scripts?

¿podrías mostrar los archivos que indican los mensajes de error?

si los mensajes son recientes, ¿entonces es functions_aux.php el archivo donde tienes las funciones que comentas al inicio?

dejame adivinar... si!!

bueno, los errores van encadenados... que, seguramente es por eso que no te escribe finalmente, bueno, PHP no miente...

y recuerda, una cosa es creer que no hay errores, otra es estar completamente seguro...

¿como estar seguro siempre?
R: activando el reporte de errores, y configurar el mismo en el nivel mas estricto...

por favor, lee lo siguiente:
http://www.forosdelweb.com/f142/form...0/#post2416683

o bien, usa esto al inicio de todos tus scripts:
Código PHP:
error_reporting(E_ALL);
ini_set('display_errors'1); 
si tienes desactivado el reporte de errores el lenguaje se torna muy "flexible", y si cometes algún error no te lo reportará...

eso da una falsa sensación de seguridad al respecto, no lo olvides!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 23/08/2010, 13:44
 
Fecha de Ingreso: julio-2010
Mensajes: 50
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Problema con PHP en CentOS

Hice lo que me dijiste y obtuve los errores que decía en el log impresos en la página, pero aún así no los entiendo, igualmente, tengo que solucionarlos yo y no pretendo que alguien más lo haga.

Lo que si, luego de intentar

Código PHP:
error_reporting(E_ALL);
ini_set('display_errors'1); 
ahora la página no me está mostrando el contenido.

Saqué esas dos líneas, afín de por lo menos dejarlo como estaba y no me funcionó.
Intenté por otro lado escribir estas dos líneas en el archivo:

Código PHP:
error_reporting(0);
ini_set('display_errors'0); 
Y continuo obteniendo el mismo resultado.

Me gustaría si fuera posible volver a lo que tenía antes ya que cuando menos, el sitio funcionaba...

Saludos!
  #8 (permalink)  
Antiguo 23/08/2010, 14:04
 
Fecha de Ingreso: julio-2010
Mensajes: 50
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Problema con PHP en CentOS

Ya tengo el servidor como andaba antes y donde nombra el problema con xml_content es en este código:

Código PHP:
function generate_xml_for_banners()
{
    $query = 'select * from banners where estado = 1';
    $result = mysql_query($query);
    $xml_content.= '<?xml version="1.0" encoding="iso-8859-1"?>
                    <rotator isRandom="false">' .
                        '<bannerTime>5</bannerTime>
                          <numberOfBanners>'.mysql_num_rows($result).'</numberOfBanners>' .
                          '<banners showHeader="false">';

    while($banner = mysql_fetch_assoc($result))
    {
        $xml_content.=    '<banner>
                            <name>'.$banner['titulo'].'</name>
                            <body>Lorem Ipsum</body>
                            <imagePath>swf/'.$banner['swf'].'</imagePath>
                            <link>'.$banner['link'].'</link>
                            <time>'.$banner['time'].'</time>
                        </banner>';
    }
    $xml_content.= '</banners></rotator>';
    $filename = 'banner';
    generate_file($filename, 'xml', $xml_content);
}
la verdad no entiendo cual es el problema.

Saludos y gracias de antemano!
  #9 (permalink)  
Antiguo 23/08/2010, 14:16
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años
Puntos: 60
Respuesta: Problema con PHP en CentOS

Código PHP:
$query = 'select * from banners where estado = 1'; 
    $result = mysql_query($query); 
    $xml_content.= '<?xml version="1.0" encoding="iso-8859-1"?>
La variable xml_content antes de hacerle un "acumulador" necesitas declararla antes ya que al hacer esto.

Código PHP:
$xml_content.= ''
Estas asumiendo que ya existe $xml_content para evitar esos notices, creo que es buena practica inicializar las variables.

Código PHP:
$query = 'select * from banners where estado = 1'; 
    $result = mysql_query($query); 
    $xml_content = '';
    $xml_content.= '<?xml version="1.0" encoding="iso-8859-1"?>
Aunque leyendo bien tu problema seguro son problemas de escritura en la carpeta donde se guarda el xml
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador

Última edición por _ssx; 23/08/2010 a las 14:19 Razón: Update
  #10 (permalink)  
Antiguo 23/08/2010, 14:24
 
Fecha de Ingreso: julio-2010
Mensajes: 50
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Problema con PHP en CentOS

Gracias, _ssx, hice lo que dijiste y obtuve el mismo resultado.

El problema en si, es que al contrario de lo que pasaba en el servidor anterior y lo que pasa localmente (en mi ordenador), no está creando el archivo de nuevo en caso de encontrar contenido diferente al que está en banner.xml al momento de consultar la BD.

Por qué puede ser que no pueda crearlo si los permisos son los mismos que en el otro dominio? Es algo de la configuaración de PHP o que?

Saludos!
  #11 (permalink)  
Antiguo 23/08/2010, 14:37
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años
Puntos: 60
Respuesta: Problema con PHP en CentOS

Cambiale al archivo banner.xml los permisos ya que si fue creado con el owner de la cuenta anterior no tendra permiso de ser re-escrito, si puedes cambiarle los permisos a 777 y aun no se puede "sobre-escribir" entonces ya podría ser otro problema en la forma en que esta tu script.
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador

Etiquetas: centos, crear
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.
Respuesta




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