que parametros modo lista interactivo ingresar how ejecutar desde consola con como comandos cli php linux laravel command-line-interface env

parametros - php modo interactivo



Utilice un ejecutable CLI de versiĆ³n de PHP diferente para un comando (5)

Así que tengo el cuadro de Gentoo con tres versiones de PHP instaladas (no importa las razones):

  1. /usr/bin/php -> /usr/lib64/php5.4/bin/php
  2. /usr/bin/php5.5 -> /usr/bin/php5.5
  3. /usr/bin/php5.6 -> /usr/bin/php5.6

Quiero instalar Laravel framework usando compositor:

$ composer create-project laravel/laravel --prefer-dist

Sin embargo, esto arroja un error porque Laravel requiere PHP> 5.5.9 y el intérprete php predeterminado es 5.4 . Así que emite otro comando:

$ /usr/bin/php5.6 /usr/bin/composer create-project laravel/laravel --prefer-dist

Esto me lleva un paso más allá, pero luego entran en juego algunos comandos posteriores a la instalación del composer.json de Laravel, y la instalación se cuelga.

Esto se debe al hecho de que los comandos composer.json ven así:

"post-install-cmd": [ "php artisan clear-compiled", "php artisan optimize" ],

Como puede ver, el intérprete "predeterminado" se utiliza de nuevo.

Ahora, los archivos PHP correctos comienzan con siguiente shebang:

#!/usr/bin/env php

Esta es una buena característica ya que el intérprete de PHP se puede encontrar en diferentes ubicaciones en diferentes sistemas. Desafortunadamente, en este caso, el comando env devuelve la ruta al primer ejecutable que encuentra en la variable de entorno $PATH .

¿Cómo podría alterar el entorno de sesión actual o qué tipo de truco realizar para que la ejecución del proceso de instalación de Laravel entero; el comando php invocaría /usr/bin/php5.6 lugar de /usr/bin/php ?

No quiero cambiar la variable $PATH ni modificar archivos como composer , composer.json o la herramienta de CLI de Laravel.

Editar: también asumo que quiero hacer esto desde una cuenta de usuario normal (es decir, sin permisos de root).


¡Tal vez puedas intentar arreglar el entorno!

$ php -v PHP 5.4.x (cli) ... $ set PATH="/usr/lib64/php5.6/bin:$PATH" $ php -v PHP 5.6.x (cli) ...

O bien, si no desea modificar la RUTA de su sesión de shell, puede limitar el cambio para el comando actual solamente:

$ php -v PHP 5.4.x (cli) ... $ env PATH="/usr/lib64/php5.6/bin:$PATH" php -v PHP 5.6.x (cli) ... $ php -v PHP 5.4.x (cli) ...


Desde que apareció PHP7, Debian Linux crea diferentes ejecutables para las versiones de PHP 5 y 7 en / usr / bin de forma predeterminada (si instala ambas versiones).

Llamar a esas versiones diferentes desde la línea de comandos es tan simple como siempre:

kkarski@debian:~ $ php5 -v PHP 5.6.26-0+deb8u1 (cli) (built: Sep 21 2016 12:37:50) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies kkarski@debian:~ $ php -v PHP 7.0.9-1~dotdeb+8.1 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.9-1~dotdeb+8.1, Copyright (c) 1999-2016, by Zend Technologies

Esto obviamente solo es bueno para scripts simples. Para cualquier cosa más grande (compositor, artesano, etc.) tendrá que cambiar la variable PATH.

Para cambiar la versión que usa su servidor Apache, todo lo que tiene que hacer es:

root@debian:~# a2dismod php5 && a2enmod php7.0 Module php5 disabled. To activate the new configuration, you need to run: service apache2 restart Considering conflict php5 for php7.0: Enabling module php7.0. To activate the new configuration, you need to run: service apache2 restart

y viceversa si quieres usar la versión PHP más baja.

Mencionándolo en caso de que alguien tenga problemas similares en Debian.


El ejecutable PHP predeterminado se puede encontrar usando:

$ which php

En la mayoría de los casos, es un enlace a una versión particular de PHP:

lrwxrwxrwx 1 root root 21 aug 15 2016 /usr/bin/php -> /usr/bin/php7.1

Para cambiarlo a una versión diferente, solo vuelva a vincularlo a otra

$ sudo rm /usr/bin/php $ sudo ln -s /usr/bin/php5.6 /usr/bin/php

Antes de volver a vincular, debes asegurarte de que esté instalada la versión de PHP objetivo.


Identifique dónde está el comando php genérico actual y con qué binario apunta con which php .

Le dará un camino a un enlace simbólico como usted menciona en su pregunta

/usr/bin/php -> /usr/lib64/php5.4/bin/php

Edite el enlace simbólico para que apunte a la versión de php que desee, vea aquí https://unix.stackexchange.com/questions/88824/how-can-i-edit-symlinks

Cuando hayas terminado, invierte el proceso.

ACTUALIZACIÓN: también puede agregar un alias para el usuario actual editando ~/.bashrc y agregando lo siguiente

alias php=''/usr/bin/php5.6''

ver si esto funciona


Para cualquier otra persona que no haya encontrado ninguna solución en lo anterior, ya que usan la composer update y, de alguna manera, se usa la versión incorrecta de PHP. Al utilizar la composer self-update obtuve más información y, finalmente, descubrí que en el composer.json puede especificar una platform en la sección de config , que anula la versión de php utilizada por el compositor. Simplemente cambiando este valor o eliminando esta configuración resolvió mi problema.

composer.json "config": { "platform": { "php": "7.1" },