cygwin - instalar composer en windows
Compositor y cygwin (13)
Composer no se ejecuta correctamente en Cygwin si intenta instalarlo "globalmente".
Poner composer.phar en / usr / local / bin / composer, luego intentar ejecutarlo generará el error:
Could not open input file: /usr/local/bin/composer
¿Que tal este?
- En ~ / .bashrc, agregue:
alias composer=''php c://your//path//to//composer.phar''
- Reinicie cygwin o vuelva a cargar el bashrc ejecutando
source ~/.bashrc
Funciona para mí usando php.exe nativo de Cygwin y uno específico de Windows de XAMPP.
Acabo de tropezar con el mismo problema y encontré una solución. Publicándolo aquí, en caso de que alguna vez tenga que buscarlo nuevamente.
Configure un directorio
bin
justo debajo de/home/my-username
:cd ~ mkdir bin
Mueva el
composer.phar
(o cualquier otro de esos ingeniosos nuevos PHP imps que están en aumento) en el directorio~/bin
y asegúrese de establecer su bit de ejecución :# Notice how I got rid of the superfluous `.phar` extension mv /path/to/composer.phar ~/bin/composer chmod +x ~/bin/composer
Dígale a
cygwin
que incluya su directorio~/bin
en la ruta de búsqueda:Abra el archivo
~/.bash_profile
y descomente el siguiente párrafo ...# Set PATH so it includes user''s private bin if it exists if [ -d "${HOME}/bin" ] ; then PATH="${HOME}/bin:${PATH}" fi
Ahora, para la parte más importante:
Un script de envoltura que ayuda a que el PHP nativo de Win resuelva las rutas de estilo Unix (lo que está causando el problema después de todo, ya que Windows no sabe cómo manejar
/cygdrive/...
rutas).cd ~/bin touch php chmod +x php
Después de editar el script contenedor
~/bin/php
debería leer:#!/bin/bash # e.g. php="/cygdrive/c/Program Files (x86)/php/php.exe" php="/path/to/php.exe" for ((n=1; n <= $#; n++)); do if [ -e "${!n}" ]; then # Converts Unix style paths to Windows equivalents path="$(cygpath --mixed ${!n} | xargs)" case 1 in $(( n == 1 )) ) set -- "$path" "${@:$(($n+1))}";; $(( n < $# )) ) set -- "${@:1:$((n-1))}" "$path" ${@:$((n+1)):$#};; *) set -- "${@:1:$(($#-1))}" "$path";; esac fi done "$php" "$@"
Ahora reinicie su shell y debería invocar correctamente al intérprete de PHP cada vez que encuentre un
#!/usr/bin/env php
shebang. Simplemente emita uncomposer --help
Creo que lo que podría funcionar es construir un proxy en su lugar:
- Ponga composer.phar en /usr/local/bin/composer.phar
Cree un proxy bash como / usr / local / bin / composer con lo siguiente:
#!/bin/sh c:/path/to/php c:/path/to/composer.phar $@
chmod + x / usr / local / bin / composer
Estaba teniendo este problema. La mayoría de las respuestas estaban sobre mi cabeza pero lo arreglé sin problemas.
Paso 1) Reinstale Composer globalmente según https://getcomposer.org/download/
Paso 2) Déjalo en paz. Todas las cosas especiales que quieres hacer, no hagas eso.
Paso 3) Descargue la última versión de setup-xxx.exe desde https://cygwin.com/
Paso 4) Haz click con tu mouse.
NOTA: Durante el paso 5, sentirá un impulso repentino de leer las instrucciones, navegar por la web para obtener información y comenzar a marcar las casillas en el menú. No hagas eso
Paso 5) Haga clic en ''siguiente'' hasta que deje de preguntar. Observará sus configuraciones existentes, arreglará las cosas y agregará las dependencias faltantes.
Esto funcionó para mí.
Estaba teniendo problemas para que Composer trabajara en Cygwin y ninguna de las soluciones anteriores resolvía mi problema. Eventualmente, me topé con este comentario en la discusión de errores del compositor github:
Sí, TBH usando php de cygwin no es una gran idea, cygwin es un entorno demasiado diferente. Demasiados hacks que crean fallas ... En cualquier caso, cerrando aquí ya que no hay mucho que podamos hacer, me temo :)
No sé exactamente dónde se estaba metiendo el compositor / Cygwin / php, pero, en términos generales, mi problema era que tenía dos instalaciones conflictivas de PHP en variables ambientales, una de una instalación de WAMP y otra instalada con Cygwin. La instalación de Cygwin PHP parecía estar luchando con algún tipo de problema de ruta. Lo quité, usando solo el PHP WAMP, y el compositor funcionó en Cygwin muy bien.
La forma más fácil es instalar el compositor utilizando el instalador de Windows desde su sitio web y luego copiar los dos archivos ''compositor'' y ''composer.phar'' de "C: / ProgramData / Composer" en un directorio que se encuentra en la variable PATH. Por ejemplo, podría copiar los archivos en el directorio / bin / de cygwin. Después, puede volver a desinstalar la "versión de Windows" del compositor.
¡Actualizar! Esto es lo que hice:
- Instale PHP y los módulos necesarios del proyecto Cygwin Ports
- Descarga la última instantánea del compositor
- Cambie el nombre de ''composer.phar'' a ''compositor'' y guárdelo en / usr / local / bin
- Abra /bin/dash.exe y ejecute ''/ usr / bin / rebaseall''
- También si 4. te da un error, el compositor debería ejecutarse ahora
Lo arreglé agregando un archivo /usr/local/bin/composer
:
nano /usr/local/bin/composer
Con el siguiente contenido:
#!/bin/bash
/cygdrive/c/wamp/bin/php/php5.4.3/php "C:/wamp/bin/php/php5.4.3/composer"
Básicamente, debe llamar a PHP con una ruta de estilo de Windows, no una ruta de cygwin.
Lo que hice (muy simple):
- Instala Composer normalmente con el instalador de Windows
- Abra una consola de Cygwin, un
composer
tipos que verá algo comoCould not open input file: /c/route/to/your/composer/installation/bin
- Cree un alias
composer=''composer.bat''
en su perfil de bash o bashrc o lo que sea - Hecho
Estoy ejecutando Windows 8.1
Lograr que el compositor trabaje globalmente dentro de Cygwin es un dolor en el trasero ...
Las soluciones que he encontrado con:
No lo uses globalmente. Si está utilizando la CLI de PHP desde una instalación de Windows, no reconocerá las rutas de Linux que utiliza Cygwin.
Lo que he hecho es ponerlo en el directorio base de todos los proyectos con los que uso el compositor y hacer ../composer.phar para ejecutarlo.
Funciona bien de esta manera, y está disponible en todo el mundo ...
Descarga y compila tus propios binarios de PHP en Cygwin ... Sí, una especie de exageración.
Prueba esto:
- Instale Cygwin PHP y utilícelo para ejecutar compositor en Cygwin.
Puede elegir una de las dos formas de trabajar bien con PHP + Composer en Cygwin:
Instale Cygwin PHP e instale composer.phar en Cygwin.
Instale Windows PHP e instale Winodows Composer, luego llame luego desde Cygwin. (Windows XAMMP + Composer con alias en cmd)
Su problema se debe a que Cygwin Composer está arruinando el Windows PHP en Cygwin, por lo que no puede reconocer la ruta del archivo.
Después de instalar Cygwin PHP, el compositor se integrará con Cygwin PHP y luego se ajustará a la ruta de archivo de Cygwin.
Extensiones PHP Cygwin para uso del compositor:
php
php-json
php-mbstring
php-phar
php-zip
php-posix
Puede instalar otra extensión de PHP cuando se necesita el paquete del compositor, como php-xmlwriter
, php-tokenizer
, php-ctype
.
Guía de comandos de instalación:
Si ya ha instalado apt-cyg , hay un comando de instalación arriba:
apt-cyg install php php-json php-mbstring php-phar php-zip php-posix
apt-cyg install php-xmlwriter php-tokenizer php-ctype
Luego instale Composer a través de Cygwin PHP:
php -r "copy(''https://getcomposer.org/installer'', ''composer-setup.php'');"
php composer-setup.php
php -r "unlink(''composer-setup.php'');"
chmod +x ./composer.phar
mv ./composer.phar /usr/bin/composer
composer -v
Conclusión
Recomiendo usar Windows PHP + Windows Composer, y luego llamar a Cygwin, porque Cygwin PHP no es mucho más estable que Windows PHP.
Resolví el problema de esta manera en una configuración de Cygwin / XAMPP:
Instala
composer.phar
en el directoriophp
de XAMPPCree un script ejecutable de Bash llamado
composer
en el directoriophp
de XAMPP:#!/bin/bash script_dir=$(cygpath -w $(dirname $0)) php "$script_dir/composer.phar" $@
Es importante utilizar
cygpath -w
para convertir la ruta a una ruta en forma de Windows.Asegúrese de que el directorio
php
de XAMPP esté accesible en$PATH
Cygwin:$ export PATH=$PATH:/cygdrive/i/dev/server/xampp/php
Ahora es posible llamar al composer
desde cualquier lugar sin problemas:
$ composer -V
Composer version 264f433ca3f007d39568b3722b4bf418f58ba15b
Te sugiero que uses babun, se basa en cygwin, pero puedes instalar package by pact, puedes hacer esto:
pacto instalar php php-json php-phar
php -r "readfile ('' https://getcomposer.org/installer '');" | php
entonces diviértete
Yo tuve el mismo problema. Después de leer las instrucciones finales del instalador del compositor, dice que la variable $ PATH se debe volver a cargar. Reinicié mi computadora y luego vinculé el contenedor Composer a /usr/local/bin
.
Primero ubique el contenedor del compositor: /cygdrive/c/ProgramData/ComposerSetup/bin/composer
Luego, según la respuesta de Seldaek , después de probar un enlace simbólico que no funciona, hice:
nano /usr/local/bin/composer
#!/bin/sh
/cygdrive/c/ProgramData/ComposerSetup/bin/composer $@
chmod +x /usr/local/bin/composer
Y está funcionando.