Comunidad de diseño web y desarrollo en internet online

Error AMFPHP

Citar            
MensajeEscrito el 03 Mar 2014 02:53 pm
Hola amigos, agradecería a ver si me podéis echar una mano con un problema con AMFPHP

Explico un poco para poneros en situación.

Estoy en un VPS con centos y php 5.3.3 y he realizado una actualización del servidor y de pronto ha dejado de funcionar AMFPHP. En principio la actualización no ha afectado la versión de php que sigue siendo la 5.3.3

El código falla tanto con cualquier versión de AMFPHP ya sea la última 2.2 o inferior
Pero algo del servidor ha tenido que cambiar para que no funcione AMFPHP. Tras hacer varias pruebas e detectado lo siguiente: Antes podía enviar el resultado directamente de una query Mysql al cliente flash y ahora me da error, para que me entendáis os pongo un ejemplo.

El siguiente codigo antes del update del VPS funcionava i ahora da el siguiente Error #2044: Unhandled NetStatusEvent:. level=error, code=NetConnection.Call.Failed at sai_fla::MainTimeline/frame1()

Código PHP :

<?php
class sq {
   /**
     * return MODE
     * @return resource 
     */
    public function returnMode() {
       $link = mysql_connect('localHost', 'usuario', 'contraseña'); 
         mysql_select_db('nombreBaseDeDatos'); 
         mysql_query("SET NAMES 'utf8'");
       $res = mysql_query('select fixmode from config_system',$link);
         return $res;
    }
}
?>


En cambio si envió una cadena no da error y funciona bien, el problema es que tendría que re modificar toda la lógica del proyecto con el que estoy trabajando (Imposible a estas alturas). Actualmente se realizan las consultas y el resultado se envía al cliente flash y este las trata, de lo contrario tendría que hacer las consultas, tratarlas en el servidor con php y luego enviarlo al cliente flash.

Esto no da error.

Código PHP :

<?php
class sq {
   /**
     * return MODE
     * @return resource 
     */
    public function returnMode() {
       $link = mysql_connect('localHost', 'usuario', 'contraseña'); 
         mysql_select_db('nombreBaseDeDatos'); 
         mysql_query("SET NAMES 'utf8'");
       $res = mysql_query('select fixmode from config_system',$link);
        $resultado = "";
       while($e=mysql_fetch_array($res)){
   $resultado = $e['fixmode'];
         }
          return $resultado ;
    }
}
?>

A ver si alguien se le ocurre alguna solucion o sabe que puede ser, si no no me queda otra que provar a recrear el servidor VPS para que se quede como antes de la actualizacion y cruzar los dedos que el programa vuelva a funcionar.

Solisarg a ver si me echas un cable pls.


Por si alguien le sirve de algo os dejo unas lineas del log de apache
tambien decir que el charles me dice que la respuesta es: resource id#50
y que el codigo de respuesta es: 500 Internal Server Error


[Sun Mar 02 15:16:15 2014] [error] [client 188.165......] File does not exist: /var/www/vhosts/default/htdocs/zimlet
[Sun Mar 02 15:51:18 2014] [error] [client 98.28......] File does not exist: /var/www/vhosts/default/htdocs/HNAP1, referer: http://91.142......../
[Sun Mar 02 20:45:53 2014] [error] [client 171.33.......] script not found or unable to stat: /var/www/vhosts/default/cgi-binphp4
[Mon Mar 03 00:01:29 2014] [error] [client 50.57......] script not found or unable to stat: /var/www/cgi-bin/cgi_wrapper/php
[Mon Mar 03 03:15:18 2014] [error] [client 86.167.] File does not exist: /var/www/vhosts/default/htdocs/robots.txt
[Mon Mar 03 04:02:27 2014] [error] [client 202.53.] File does not exist: /var/www/vhosts/default/htdocs/p_
[Mon Mar 03 04:38:50 2014] [error] [client 220.95.] File does not exist: /var/www/vhosts/default/htdocs/phpMyAdmin
[Mon Mar 03 11:56:05 2014] [error] [client 99.252.] Invalid method in request \x80w\x01\x03\x01
[Mon Mar 03 11:56:06 2014] [error] [client 99.252.] File does not exist: /var/www/vhosts/default/htdocs/HNAP1, referer: http://91.142......./
PHP Warning: Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie
Citar            
MensajeEscrito el 03 Mar 2014 03:04 pm
Acabo de obtner mas informacion que alomejor ayuda a resolver el problema

[Mon Mar 03 14:18:09 2014] [warn] [client 88.20........] mod_fcgid: stderr: #5 /var/www/vhosts/dominio.com/httpdocs/build/php/Amfphp/Core/Gateway.php(239): Amfphp_Core_Amf_Handler->serialize(Object(Amf in /var/www/vhosts/dominio.com/httpdocs/build/php/Amfphp/Core/Amf/Serializer.php on line 538, referer: http://www.dominio.com/build/sai.swf
[Mon Mar 03 14:43:01 2014] [warn] [client 88.20........] mod_fcgid: stderr: PHP Fatal error: Uncaught exception 'Amfphp_Core_Exception' with message 'couldn't write object 1' in /var/www/vhosts/dominio.com/httpdocs/build/php/Amfphp/Core/Amf/Serializer.php:538, referer: http://www.dominio.com/build/sai.swf
[Mon Mar 03 14:43:01 2014] [warn] [client 88.20........] mod_fcgid: stderr: Stack trace:, referer: http://www.dominio.com/build/sai.swf

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie
Citar            
MensajeEscrito el 03 Mar 2014 03:58 pm
Hace bastante que no ando com amfphp, pero recuerdo que siempre fue mala idea devolver directamente mysql_query porque los cambios de servidor o versión de PHP disparaban oscuros problemas, ya que es un objeto muys custom de PHP. Lo que siempre funcionó es pasar el array, ya sea hecho a mano con mysql_fetch_array($result) o alguna solución mas específica.
Incluso la gente de Sixelabs que tomó el proyecto lo dice:

returning resources is no longer supported. It was messy, and now DB abstraction layers do it way better. So no more “return mysql_query(‘SELECT * FROM BlaTable’)”. Rather Use a DB abstraction layer like PDO that will convert the resource to an array.


Es raro que no hayas tenido problemas antes. Mira la página http://www.silexlabs.org/amfphp/documentation/upgrading-from-amfphp-1-9/, allí también sugieren el uso de PDO http://www.php.net/manual/en/intro.pdo.php

Me temo que si no quieres cambiar código del servidor, tendrás que volver a la versión anterior donde si te funcionaba

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Mar 2014 07:47 pm
Gracias jorge, al final he tenido que pasar deprisa y corriendo el proyecto a un servidor antiguo para ir tirando, porque ya llevamos desde el viernes con el prgrama fuera de servicio.

Ahora con calma ire readaptando todas las conexiones pantalla por pantalla para en vez de recibir el resource directamente recibir en su lugar un array.

Si te soy sincero llevava hasta dia de hoy con una versiond de AMFPHP anterior a la 1.9 trabajando con el mismo sistema sin problemas aunque con algun que otra modificacion, ahora aprovechare para pasar a la 2.2

Saludos y gracias Jorge

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

firefox
Citar            
MensajeEscrito el 04 Mar 2014 01:45 pm
Hola de nuevo al final encontré la solución.
Como suelo ser bastante cabezón antes de actualizar todo el programa intente averiguar algo más en base a los siguientes errores:
[Tue Mar 04 13:19:10 2014] [warn] [client 88.20.......] mod_fcgid: stderr: PHP Fatal error: Uncaught exception 'VerboseException' with message 'session_start(): open(/var/lib/php/session/sess_l752qh0ov50ap0uup29iv04di5, O_RDWR) failed: Permission denied (13)' in /var/www/vhosts/dominio.com/httpdocs/build/php/amfphp/core/amf/app/Filters.php:105, referer: http://www.dominio.com/build/sai.swf
[Tue Mar 04 13:19:10 2014] [warn] [client 88.20.......] mod_fcgid: stderr: Stack trace:, referer: http://www.dominio.com/build/sai.swf
[Tue Mar 04 13:19:10 2014] [warn] [client 88.20……..] mod_fcgid: stderr: #0 [internal function]: amfErrorHandler(2, 'session_start()...', '/var/www/vhosts...', 105, Array), referer: http://www.dominio.com/build/sai.swf
En algunas webs, referente al problema de las sesiones indican que hay que setear php_flag session.auto_start off desde un htaccess o desde el php.ini, en mi caso este no era el problema porque ya de serie mi php.ini viene con esta opción desactivada.

Así que puse en san google "session start error permission denied" y como resultado me dio el siguiente enlace http://stackoverflow.com/questions/6821532/php-warning-permission-denied-13-on-session-start
Donde sugieren que el error puede ser que no hay permisos de escritura para la carpeta /var/lib/php/sesión

Así que he entrado a dicha carpeta como root he asignado los permisos necesarios y tachan AMFPHP1.2 nuevamente en funcionamiento con la versión php 5.3.3, por algún motivo al realizar las actualizaciones del servidor los permisos de dicha carpeta habían cambiado y eso desencadeno que amfphp dejara de funcionar.

Espero que si alguien algún día tiene el mismo problema encuentre este post y le sirva de ayuda.


Saludos

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.