entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

PHP antiguo a PHP 5.5.11

Alguien sabe como adaptar una web completa desarrollada con PHP 5.2.17 a PHP 5.5.11? Es la última estable y nos gustaría usarla pero ahora mismo tengo corriendo en Windows Server 2012 PHP 5.5.11 y copio la web a IIS y cuando la mapeo e intento entrar no me enseña nada. Sólo se me carga el Favicon...

Un saludo!

2 Respuestas

3votos

Leonardo-Tadei Puntos227320

Hola Ankeorum,

si la pagina de pruebas que te pasó Carlos se ve ahora correctamenet, el motivo por el cual no funciona el sitio aparece seguro en el log de errores del servidor (o de PHP si es independiente)

Dado que el servidor es para desarrollo, deberías configurar el PHP.INI en "modo developer" para que te muestre la información de los errores por pantalla:

display_errors = On
display_startup_errors = On
error_reporting = E_ALL
html_errors = On
log_errors= On

Esto lo tenés que hacer para cada sitio/proyecto que haya si cada uno tiene su propio PHP.INI

Saludos!

2votos

carlossevi Puntos63580

¿Estás seguro de que el problema que comentas se debe a la versión de PHP del código y no a la configuración del IIS con PHP?

Para descartar problemas en la instalación crea un archivo index.php con el siguiente contenido y comprueba que se muestra correctamente:

<<?php
// testing sessions
// check to see if files are being created
// in the session.save_path folder
session_start();
?>
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<p>
The browser you're using is
<?php echo $_SERVER['HTTP_USER_AGENT']; ?>
</p>
<p>
<!-- test the browscap setup -->
Your browser's capabilities are: <br/>
<pre>
<?php print_r(get_browser(null, true)); ?>
</pre>
</p>
<?php phpinfo(); ?>
</body>
</html> 

Si crees que efectivamente es por la versión de PHP puedes revisar la lista de incompatibilidades generadas en cada cambio de versión para ver si tu código está afectado por alguna:

Cambio de 5.2 a 5.3:
http://www.php.net/manual/en/migration53.incompatible.php
Cambio de 5.3 a 5.4:
http://www.php.net/manual/en/migration54.incompatible.php
Cambio de 5.4 a 5.5:
http://www.php.net/manual/en/migration55.incompatible.php

0voto

ankeorum comentado

No se muestra nada al escribir ese código... :(

0voto

carlossevi comentado

Yo creo que lo que está pasando es que no tienes IIS correctamente configurado para que interprete PHP. Por defecto no lo hace y es necesario instalarlo y configurarlo. Aunque a mi no me ha tocado nunca, te pego un par de links que he encontrado con documentación al respecto:

El oficial de PHP: http://www.php.net/manual/es/install.windows.iis7.php
Otro de un foro: http://www.elguruprogramador.com.ar/articulos/configurar-el-iis-para-que-funcione-con-php.htm

0voto

ankeorum comentado

Bien, ahora mismo tengo funcionando el código que me pusiste arriba pero sin embargo el código fuente de la app web sigue sin funcionar y después de leer los changelog de las diferentes versiones no veo ninguna función que yo esté usando y no valga en PHP 5.5.11.

Hay alguna página o aplicación que te permita saber qué líneas de tu código no son compatibles con el PHP que usas? En mi caso mi código está en 5.2.17 y el servidor corre 5.5.11.

Un saludo

0voto

carlossevi comentado

Si sigues viendo una página en blanco yo veo más probable que siga siendo cuestión de configuración que de versiones de código. Si fuese una incompatibilidad entre versiones deberías ver algún mensaje de error propio de PHP.

¿En qué aplicación web has montado el código que te ponía? ¿En una nueva o en la que estás poniendo el código de tu apliación anterior? Ten encuenta que la vinculación de PHP.exe con las extensiones .php debes hacerlo en cada configuración de cada Sitio web por separado.

0voto

ankeorum comentado

Lo pongo como respuesta nueva para que se vea más claro, a ver, tenemos varios servidores vale?

Servidor 1 tiene IIS y PHP 5.2.17 corriendo en él y tiene varios proyectos web, esos proyectos funcionan perfectamente.

Hemos desarrollado otro proyecto en PHP 5.5.6 en otro servidor con lo que:
Servidor 2 tiene IIS y PHP 5.5.6 (ahora actualizado a 5.5.11) y tiene otro proyecto corriendo en él. El objetivo es que los proyectos web de servidor 1 corran en servidor 2 con PHP 5.5.11.

Cómo puedo conseguir esto?

0voto

carlossevi comentado

Puedes validar código PHP online en esta herramienta:
http://es.piliapp.com/php-syntax-check/

También puedes hacer que la versión instalada en una máquina concreta valide la sintáxis de un fichero sin necesidad de ejecutarlo con las opciones de línea de comandos. Un ejemplo:

php.exe -l ruta_al_fichero.php

Toda la documentación: http://www.php.net/manual/en/features.commandline.options.php


De todas formas, insisto para que verifiques: que en una instancia de IIS tengas una aplicación ejecutándose correctamente con intérprete de PHP no quiere decir que cualquier Sitio (lo que tu llamas proyecto) que añadas vaya a funcionar correctamente. Tienes que configurar cada Sitio por separado para que ejecuten el intérprete de PHP.

0voto

ankeorum comentado

Bien, ahora mismo estoy depurando todo pero esto es cercano a lo imposible. Tenemos el siguiente problema:

http://blogs.msdn.com/b/brian_swan/archive/2010/03/10/mssql-vs-sqlsrv-what-s-the-difference-part-2.aspx

En el servidor nuevo usamos sqlsrv que tiene soporte mientras que mssql ya no tiene así que ahora todo el código del sitio debe ser convertido de usar funciones mssql a sqlsrv, me arroja fallos por todas partes pero gracias al consejo de leonardo tengo los mensajes de error que me van diciendo por donde tengo que caminar. La realidad es que está siendo un trabajo no de chinos, sino de gente que trabaje más que ellos y más duro... una cosa complicada y la tarea va a llevarme un tiempo bastante largo solucionarla porque tenemos cerca de un millón de líneas de código que depurar...

En fin, supongo que a esto es a lo que nos dedicamos.

Un saludo!

0voto

carlossevi comentado

Valorad la posibilidad de refactorizar e incluir una clase para el manejo de la BBDD porque de tenerla implementada con anterioridad este cambio os hubiera costado 5 minutos. ¡Suerte y ánimo!

0voto

ankeorum comentado

Qué significa refactorizar?

0voto

ankeorum comentado

Carlossevi muchísimas gracias por toda la ayuda, después de una reunión con mi compañero del departamento de sistemas de la empresa nos hemos dado cuenta de que lo que tú propones es la mejor opción ya que si en el futuro movemos nuestros sistemas de nuevo a otra versión de PHP que ahora no soporte las consultas tal y como nos ha pasado con mssql vamos a tener el mismo problema y volver a hacer este trabajo así que como hay que hacerlo ahora hemos decidido que la mejor opción va a ser crear la clase para el manejo de la base de datos y así usarla en todos los proyectos que realicemos. Eso sí, nunca jamás hice algo así y después de buscar documentación he encontrado mucha sobre el manejo de clases y la creación para integración con MySQL pero para SQL Server no he encontrado nada. Sería posible que me echaras un cable? Podemos hablar por correo electrónico? O por facebook / telegram / whatsapp / twitter... dime la forma y nos comunicamos please! Creo que me podrías ayudar con esto y yo estoy muy perdido.

Un saludo y muchísimas gracias!

0voto

carlossevi comentado

Copio de la Wikipedia:

La refactorización (del inglés refactoring) es una técnica de la ingeniería de software para reestructurar un código fuente, alterando su estructura interna sin cambiar su comportamiento externo.

0voto

ankeorum comentado

Gracias, podemos comunicarnos de alguna otra manera a ver si me puedes echar un cable?

1voto

carlossevi comentado

Creo que la mejor forma para comunicarnos será seguir usando esta página posteando nuevas preguntas por dos motivos:

  1. Aportamos conocimiento a la comunidad y otros desarrolladores que se encuentren con el mismo problema en el futuro lo resolverán más fácilmente.
  2. No perdemos la posibilidad de que aporten su punto de vista otros desarrolladores que en esta página los hay muy buenos. Por ejemplo leonardo-tadei tiene mucha experiencia y siempre da buenísimas respuestas.

Respecto a cómo empezar a implementar esa clase te pueden servir los ejemplos que hayas encontrado de MySQL. Tienes que adaptarlo a tus funciones de MSSQL pero la estructura y uso de la clase deben ser la misma para que precisamente en el futuro pueda reemplazarse una por otra sin que tu aplicación lo note.

Antes de empezar con el proyecto de refactorización te recomendaría afrontar alguna lectura de POO, patrones MVC o incluso plantearte el uso de algún framework de PHP para facilitarte la implementación de este tipo de soluciones. Busca algún libro o tutoriales, te copio un enlace que otro usuario publicó por aquí: http://www.freelibros.org/programacion/curso-de-programacion-en-php-con-mysql.html

Suerte.

0voto

ankeorum comentado

Ok comentaremos por aquí pues, yo he estado leyendo la siguiente documentación:

http://danielbrena.blogspot.com/2014/01/crear-una-clase-en-php-para-el-manejo.html

El asunto es que cuando veo la codificación PHP que tiene en el centro de la página sobre fondo negro no entiendo algunas cosas. Por qué hace unas funciones que no hacen nada? Ni reciben parámetros ni nada?

Me refiero a las:

abstract protected function get();
abstract protected function set();
...

Después hace la función de abrir conexión y cerrar las cuales entiendo perfectamente así como la función de ejecutar una consulta y obtener resultados de consulta pero esas get(), set(), edit() y delete() no entiendo qué son ni cual es su función.

También me gustaría saber cuando hace

$this->conexion = new (en mi caso sería sqlsrv_connect) mis datos

Qué quiere decir el $this->conexion? this hace alusión a la clase y conexion a la variable conexion de la clase?
Lo siento si parezco un ignorante pero nunca había hecho esto antes.

0voto

Peter comentado

Gracias @carlossevi.

@ankeorum, abre todas las preguntas que hagan falta, tener 50 preguntas en un solo tema nunca va a ser una buena opción.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta