Estamos ejecutando XAMPP con PHP 7.0 porque nuestros nuevos productos requieren PHP 7.
Pero hay proyectos antiguos que utilizan funciones como mysql_connect
, etc. Se eliminan en PHP 7.0.
Entonces, ¿hay alguna manera de cambiar fácilmente las versiones de PHP en XAMPP?
Nota : No sugiera actualizar el proyecto anterior a compatible con nuevas versiones porque no estoy en condiciones de hacerlo debido a las decisiones que no puedo tomar como desarrollador (solo un empleado).
Respuestas:
Ejecute una versión PHP anterior solo para el directorio de su proyecto anterior: esto servirá para el propósito la mayor parte del tiempo, es posible que tenga uno o dos proyectos antiguos que desee ejecutar con una versión PHP anterior. Simplemente configure xampp para ejecutar una versión PHP anterior solo para esos directorios de proyecto.
Ejecute una versión anterior de PHP en un puerto separado de xampp: a veces puede estar actualizando un proyecto anterior a la última versión de PHP cuando necesita ejecutar el mismo proyecto en versiones de PHP nuevas y anteriores de un lado a otro. Luego puede configurar una versión anterior de PHP en un puerto diferente (digamos 8056) para que cuando vaya a
http://localhost/any_project/
xampp ejecute PHP 7 y cuando vaya ahttp://localhost:8056/any_project/
xampp ejecute PHP 5.6.Ejecute una versión anterior de PHP en un host virtual: puede crear un host virtual como localhost56 para ejecutar PHP 5.6 mientras puede usar PHP 7 en localhost.
Paso 1: descarga PHP
Entonces, tiene PHP 7 ejecutándose bajo xampp, desea agregar una versión anterior de PHP, digamos PHP 5.6. Descargue la versión nts (Non Thread Safe) del archivo zip PHP de php.net (consulte el archivo para versiones anteriores) y extraiga los archivos que se encuentran debajo
c:\xampp\php56
. La versión segura para subprocesos no incluye php-cgi.exe.Paso 2: configurar
php.ini
Abrir
c:\xampp\php56\php.ini
archivo en el bloc de notas. Si el archivo no existe copiaphp.ini-development
dephp.ini
y abrirlo en el Bloc de notas. Luego, descomenta la siguiente línea:Paso 3: configurar apache
Abra el panel de control de xampp, haga clic en el botón de configuración para apache y haga clic en
Apache (httpd-xampp.conf)
. Se abrirá un archivo de texto, coloque la siguiente configuración en la parte inferior del archivo:Nota: Si lo desea, puede agregar más versiones de PHP a su instalación de xampp siguiendo los pasos 1 a 3.
Paso 4 (opción 1): [Agregar directorios para ejecutar una versión específica de PHP]
Ahora puede configurar directorios que se ejecutarán en PHP 5.6. Simplemente agregue lo siguiente en la parte inferior del archivo de configuración para establecer directorios.
Paso 4 (opción 2): [Ejecutar una versión PHP anterior en un puerto separado]
Ahora para configurar PHP v5.6 en el puerto 8056, agregue el siguiente código al final del archivo de configuración.
Paso 4 (opción 3): [Ejecutar una versión PHP anterior en un host virtual]
Para crear un virtualhost (localhost56) en un directorio (htdocs56) para usar PHP v5.6 en http: // localhost56 , cree el directorio htdocs56 en la ubicación deseada y agregue localhost56 a su archivo de hosts ( vea cómo ), luego agregue el siguiente código al final del archivo httpd-xampp.conf.
Finalizar: guardar y reiniciar Apache
Guarde y cierre el archivo de configuración, reinicie apache desde el panel de control de xampp. Si eligió la opción 2, puede ver el puerto adicional (8056) en su panel de control de xampp.
Si encuentra el error anterior, abra de
httpd-xampp.conf
nuevo y comente la siguiente línea con un número inicial (carácter hash).fuente
php somefile.php
sin ningún error?SetEnv PHPRC
por lo que no puedo comentarlo, pero sigo recibiendo ese error. :(Error message: End of script output before headers: php-cgi.exe
Puede descargar cualquier versión de PHP que necesite y colocarla en sus propios directorios, p. Ej.
c:\php5\
c:\php7\
Todo lo que necesita hacer es decirle a su servidor web (Apache) qué versión de PHP usar, lo que debe hacer cargando el módulo apropiado. En Apache puede hacer esto buscando el archivo
httpd.conf
y luego editando la línea apropiada:LoadModule php7_module c:\php7\libphp7.so
Tendrás que descubrir los caminos correctos, por supuesto, esto es solo para ilustración.
Guarde
httpd.conf
y reinicie su servidor. Tenga en cuenta que si no lo reinicia, los cambios no tendrán efecto.No hay un interruptor de GUI para poder hacer esto, debe editar el
.conf
archivo y luego reiniciar Apache. Hacer esto solo lleva un par de segundos e incluso puede comentar una versión, por lo que "cambiar" solo requiere un par de pulsaciones de teclas, por ejemploUsa PHP 5:
Usa PHP 7:
No necesita múltiples versiones de XAMPP , ni un arranque dual, ni usar una máquina diferente, ni ninguna de las otras "soluciones" que han sugerido soluciones complicadas. El OP quiere usar XAMPP y decirle qué versión de PHP usar. Esta es la forma más rápida y eficiente de hacerlo, y solo requiere una instalación de XAMPP.
Edición 1 de noviembre de 2017: Al parecer, algunas personas dicen que no hay
.so
archivos en Windows. La respuesta que di fue adaptada de cómo tengo las cosas configuradas en mi Mac (que usa.so
archivos en lugar de.dll
). Sin embargo, el principio de la respuesta sigue siendo exactamente correcto. Está utilizando el archivo de configuración de Apachehttpd.conf
para especificar dónde se encuentra el módulo PHP (.so
o.dll
) en su sistema. Entonces, la única diferencia para Windows sería el nombre del archivo y / o la ubicación de la ruta. La respuesta que he dado también es correcta para una instalación estándar de Apache / PHP (sin XAMPP).fuente
Puede descargar e instalar dos xampps diferentes como yo: (primero es php7, segundo es php5)
y si no quiere hacer eso, le sugiero que use wamp y cambie las versiones como se muestra aquí .
fuente
Recomendaría usar Docker, esto le permite dividir el entorno en varios componentes y mezclar y combinar los que desee en cualquier momento.
Docker le permitirá ejecutar un contenedor con MySQL, otro con PHP. Como son imágenes separadas, puede tener dos contenedores, uno PHP 5 y otro PHP 7, puede iniciar el que desee y el puerto 80 puede asignarse a ambos contenedores.
https://hub.docker.com tiene una amplia gama de imágenes preconfiguradas que puede instalar y ejecutar sin problemas.
También agregué portainer como imagen, lo que le permite administrar los diversos aspectos de la configuración de su ventana acoplable, desde una imagen de ventana acoplable (inicié este contenedor al inicio para evitar tener que usar la línea de comandos). No hace todo por usted y, a veces, es más fácil configurar e iniciar las imágenes por primera vez desde la línea de comandos, pero una vez configurada puede iniciarlas y detenerlas a través de una interfaz web.
También es posible ejecutar ambos contenedores al mismo tiempo y asignar puertos separados a cada uno. Entonces, el puerto 80 se puede asignar a PHP 5 y 81 a PHP 81 (o PHP 7 si está viendo esto en 2017).
Hay varios tutoriales sobre cómo instalar Docker ( https://docs.docker.com/engine/installation/ ) y un montón de otras cosas de tipo "cómo". Pruebe http://www.masterzendframework.com/docker-development-environment/ para obtener una configuración del entorno de desarrollo.
fuente
Yo uso Uniserver.
Tiene esta característica incorporada.
http://www.uniformserver.com/
Es así de simple.
Incluso se ejecuta en una unidad flash. Tiene emulación cron, soporte para perl, mariaDB, un par de versiones de Mysql, servidor filezilla y algunas otras cosas.
fuente
Puede tener dos versiones diferentes de XAMPP.
fuente
Estoy trabajando en un proyecto de diez años en el trabajo. Entonces 5.6 es mi valor predeterminado. También hay proyectos pequeños más antiguos que solo funcionan con 5.2 y también quiero trabajar en nuevas versiones para mis proyectos personales con 7.3.8
Esto es lo que hice para agregar 5.2 y 7.3.8 en la versión 5.6 por defecto.
1 - Versiones descargadas de php TS;
v7.3.8 (más reciente): https://windows.php.net/download/
v5.2: https://www.apachelounge.com/viewtopic.php?t=7349
2 - Extraído a la carpeta c: \ xampp \ php738 y c: \ xampp \ php52 en orden
3: se agregaron estas líneas en la parte inferior de httpd-xampp.conf (o httpd.conf);
*** AVISO IMPORTANTE: NO debe usar el nombre de alias del script como nombre de la carpeta de destino, deben ser diferentes. (por ejemplo, / php7x está bien, / php7 no lo está)
PHP 7.3.8 para la carpeta D: \ www \ php7
PHP 5.2 para la carpeta D: \ www \ php52
Algunas notas útiles:
Y como última nota adicional, si necesita configurar un host virtual con cualquiera de las versiones, puede utilizar un enfoque similar. Una muestra de laravel vhost conf para php 7.3.8;
Gracias a @Munim Munna por la respuesta detallada, quería compartir una muestra sólida con el aviso importante anterior.
fuente
A menos que tenga que ser absolutamente y definitivamente XAMPP, puede intentar obtener lo que desea con WAMP. WAMP es prácticamente lo mismo en un paquete diferente.
Una vez que lo tenga instalado, puede cambiar entre las versiones de php aquí:
Puede instalar tantas versiones de PHP como necesite.
Así es como se hace en detalle.
Solo ve aquí: descarga WAMP
Luego seleccione su servidor base, por ejemplo, el último con php7.
Luego, cuando esté instalado WAMP 3, vaya a la carpeta: complementos y seleccione la versión (o versiones) de php que busca . Ofrecen sabores php a partir de php 5.3.29, que deberían funcionar con mysql_connect.
Para instalar el complemento, durante la instalación (haga doble clic en el archivo exe) simplemente apunte a la carpeta donde tiene instalado su WAMP 3.
Luego puede usar el contenido de otras carpetas, como: aplicaciones, etc. para agregar más funcionalidad
Todo está interconectado, por lo que puede concentrarse en la codificación y no piratear su entorno.
fuente
Sí tu puedes. Supongo que ya tienes un xampp instalado. Entonces,
Así es como estoy trabajando con múltiples xampp instalados
fuente
Es posible tener múltiples versiones de PHP configuradas con una sola instalación de XAMPP. Las siguientes instrucciones están funcionando para Windows.
C:\xampp\php
BecomeC:\xampp\php-7.1.11
.C:\xampp\php-5.4.45
.Ahora necesita editar la configuración de XAMPP y Apache:
C:\xampp\apache\conf\httpd.conf
, busque la configuración de XAMPP para PHP, debe cambiarla a algo como:Donde tiene que comentar (con
#
) las otras versiones de PHP para que soloInclude
se interprete una en ese momento.Ahora en
C:\xampp\apache\conf\extra
cambio de nombre de directoriohttpd-xampp.conf
ahttpd-xampp.conf.7.1
y añadir un nuevo archivo de configuración parahttpd-xampp.conf.5.4.45
. En mi caso, copié el archivo conf de otra instalación de XAMPP para php 5.5 ya que la sintaxis puede ser ligeramente diferente para cada versión.Edite
httpd-xampp.conf.5.4.45
yhttpd-xampp.conf.7.1
reemplace todas las referencias alphp
directorio con la nuevaphp-X.X
versión. Aquí se deben realizar al menos 10 cambios para cada archivo.Ahora necesita editar php.ini para las dos versiones. Por ejemplo para PHP 7.1, edición
C:\xampp\php-7.1.11\php.ini
en la que se reemplace la ruta del directorio de phpinclude_path
,browscap
,error_log
,extension_dir
..Y eso es. Ahora puede iniciar Apache desde el Panel de control XAMPP. Y para cambiar de una versión a otra, solo necesita editar
C:\xampp\apache\conf\httpd.conf
y cambiar la versión de PHP incluida antes de reiniciar Apache.fuente
ejecute esto en las ventanas del símbolo del sistema (cmd.exe).
cámbielo dependiendo de dónde coloque la instalación de php 7.
fuente
No necesita perder su tiempo con estas configuraciones, solo use MAMP :)
MAMP tiene una función de selección de versión de PHP en la interfaz.
fuente
Esta es probablemente la respuesta menos técnica a la pregunta, pero también es la más fácil de lograr.
Si tiene dos unidades como C: y D: puede instalar una instancia separada de XAMPP en ambas unidades con diferentes versiones de php. Esto me llevó menos de 10 minutos y es menos propenso a errores.
Acabo de crear dos accesos directos de escritorio para xampp-control.exe y nombro los accesos directos después de su versión de php. Espero que esto ayude a alguien como yo que prefiere una solución muy rápida y sucia.
fuente
Sigue estos sencillos pasos . Actualmente estoy ejecutando XAMPP en PHP 7.2 pero necesito PHP 5.6 para trabajar en proyectos antiguos
PASO 1
Descargue la versión Thread Safe de PHP en https://windows.php.net/download
Ponga archivos en su [Unidad]: \ xampp \ php5.6
PASO 2
Copie [Unidad]: \ xampp \ apache \ conf \ extra \ httpd-xampp.conf
Cambie el nombre a [Unidad]: \ xampp \ apache \ conf \ extra \ httpd-xampp5.6.conf Cambie el nombre del archivo según la versión de Php
PASO 3
Edite el recién creado 'httpd-xampp5.6.conf'
básicamente necesitas cambiar toda la fuente PHP y .dll
antes de
Después
Aquí está mi archivo: https://gist.github.com/mpalencia/f8a20c31bffb02fe20d371218c23d1ec
PASO 4
Edite el archivo [Unidad]: \ xampp \ apache \ conf \ httpd.conf
antes de
Después
PASO 5
Edite su configuración de PHP 5.6 - php.ini
Agregue su directorio de extensión: extension_dir = "C: \ xampp \ php5.6 \ ext"
PASO 6
Iniciar Apache
PASO 7
Editar ruta variable de entorno PHP en Windows
fuente
Tal vez un poco tarde, pero estoy usando un lote para cambiar el nombre de las carpetas PHP (una versión ligeramente modificada del phpswitch que encontré hace años).
Copias las diferentes carpetas en tu instalación de XAMPP. Cada carpeta PHP (excepto la activa) recibe el número de versión como un sufijo (por ejemplo, php_5.6.32 ). En TODAS las carpetas PHP, se crea un archivo (PHP_VERSION), que contiene solo el número de versión respectivo, para que el Script pueda obtener esta información. Pero todo eso se describe en el archivo README.
Desde PHP7, httpd-xampp.conf carga php7ts.dll en lugar de php5ts.dll . Así que tuve que extender el script (PHPSwitch.php) para cambiar el nombre de estos archivos de configuración también siguiendo el mismo enfoque.
fuente
Necesitaba hacer lo mismo, así que busqué en Google cómo y llegué a apilar el desbordamiento, donde el OP tenía el mismo problema ... Entonces, mis hallazgos ... Intenté cambiar el nombre de los archivos desde todas las direcciones diferentes y mi conclusión fue que básicamente me estaba llevando demasiado largo. SOOOO Terminé instalando la versión 7 desde aquí:
https://www.apachefriends.org/index.html (elimine los servicios y salga de xampp antes de intentar)
Cuando se le pregunte dónde poner el nombre del directorio, así (asígnele un nombre diferente):
y
DONEZO! Ahora solo asegúrate de eliminar los servicios y salir antes de cambiar de un lado a otro y tienes 2 envés XAMPP estériles para jugar.
¡Hurra! ahora realmente puedo ir a trabajar!
fuente
Utiliza este conmutador php
Puede controlar la versión de PHP a cualquier proyecto que desee a través de la configuración de vhost.
fuente
Sé que esta es la publicación anterior, pero quiero compartir que hay una biblioteca para seguir ejecutando mysql_connect () en PHP 7. Funciona al anular la función real (mysql_connect () se reemplaza por mysqli_connect () que funciona en esta biblioteca).
Encontré de este video https://www.youtube.com/watch?v=Eqd-jJu4sQ4
espero que ayude
fuente