Le compositeur ne fonctionne pas correctement dans Cygwin si vous essayez de l'installer "globalement".
Mettre composer.phar dans/usr/local/bin/composer, puis essayer de l'exécuter entraînera l'erreur:
Could not open input file: /usr/local/bin/composer
Je viens juste de trébucher sur le même problème et de trouver une solution. Publiez-le ici, au cas où je devrai le vérifier à nouveau.
Configurez un répertoire bin
juste sous /home/my-username
:
cd ~
mkdir bin
Déplacez le composer.phar
(ou tout autre de ces astucieux nouveaux PHP imps en augmentation) Dans le répertoire ~/bin
et assurez-vous de définir c'est bit d'exécution :
# Notice how I got rid of the superfluous `.phar` extension
mv /path/to/composer.phar ~/bin/composer
chmod +x ~/bin/composer
Dites à cygwin
d'inclure votre répertoire ~/bin
dans le chemin de recherche:
Ouvrez le fichier ~/.bash_profile
et décommentez le paragraphe suivant ...
# Set PATH so it includes user's private bin if it exists
if [ -d "${HOME}/bin" ] ; then
PATH="${HOME}/bin:${PATH}"
fi
Maintenant, pour la partie la plus importante:
Un script d'encapsulation qui aide le PHP natif de Win _ à résoudre les chemins de style Unix (ce qui cause le problème Après tout, car Windows ne sait pas comment gérer les chemins /cygdrive/...
).
cd ~/bin
touch php
chmod +x php
Après avoir édité le script wrapper ~/bin/php
devrait se lire:
#!/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" "$@"
Maintenant, redémarrez votre shell et il devrait appeler correctement l'interprète PHP chaque fois qu'il Tombe sur un #!/usr/bin/env php
Shebang. Émettez simplement un:
composer --help
Celui-ci, ça va?
alias composer='php c:\\your\\path\\to\\composer.phar'
source ~/.bashrc
Fonctionne pour moi en utilisant le php.exe natif de Cygwin et celui spécifique à Windows de XAMPP.
Je pense que ce qui pourrait fonctionner est de construire un proxy à la place:
Créez un proxy bash en tant que/usr/local/bin/composer avec les éléments suivants:
#!/bin/sh
c:/path/to/php c:/path/to/composer.phar $@
chmod + x/usr/local/bin/composer
J'ai eu le même problème. Après avoir lu la dernière instruction du programme d’installation de composer, il indique que la variable $ PATH doit être rechargée. J'ai redémarré mon ordinateur puis lié la corbeille Composer à /usr/local/bin
.
Commencez par localiser le répertoire de composition: /cygdrive/c/ProgramData/ComposerSetup/bin/composer
Ensuite, selon Seldaek answer, après avoir essayé un lien symbolique qui ne fonctionnait pas, j'ai:
nano /usr/local/bin/composer
#!/bin/sh
/cygdrive/c/ProgramData/ComposerSetup/bin/composer $@
chmod +x /usr/local/bin/composer
Et ça marche.
Ce que j'ai fait (très simple):
composer
, vous verrez quelque chose comme Could not open input file: /c/route/to/your/composer/installation/bin
composer='composer.bat'
sur votre profil bash ou bashrc ou autre choseJ'utilise Windows 8.1
Essaye ça:
Vous pouvez choisir l'une des deux façons de bien fonctionner avec PHP + Composer dans Cygwin:
Installez Cygwin PHP et installez composer.phar dans Cygwin.
Installez Windows PHP et installez Winodows Composer, puis appelez ensuite depuis Cygwin. (Windows XAMMP + Composer avec un alias dans cmd)
Votre problème est dû au fait que Cygwin Composer est en train de ruiner Windows PHP sur Cygwin, de sorte qu'il ne peut pas reconnaître le chemin du fichier.
Après l’installation de Cygwin PHP, le compositeur s’intégrera avec Cygwin PHP puis s’adaptera au chemin de fichiers de Cygwin.
php
php-json
php-mbstring
php-phar
php-Zip
php-posix
Vous pouvez installer une autre extension PHP lorsque le package du compositeur est nécessaire, tel que php-xmlwriter
, php-tokenizer
, php-ctype
.
Si vous avez déjà installé apt-cyg , il existe une commande d'installation ci-dessus:
apt-cyg install php php-json php-mbstring php-phar php-Zip php-posix
apt-cyg install php-xmlwriter php-tokenizer php-ctype
Puis installez Composer via 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
Je recommande d'utiliser Windows PHP + Windows Composer, puis de l'appeler dans Cygwin, car Cygwin PHP n'est pas très stable par rapport à Windows PHP.
J'avais ce problème. La plupart des réponses étaient sur ma tête, mais je l'ai corrigé sans problème.
Étape 1) Réinstallez Composer de manière globale conformément à https://getcomposer.org/download/
Étape 2) Laissez-le tranquille. Tout ce que tu veux faire de spécial, ne le fais pas.
Étape 3) Téléchargez le dernier fichier setup-xxx.exe à partir de https://cygwin.com/
Étape 4) Cliquez dessus avec votre souris.
REMARQUE: au cours de l'étape 5, vous ressentirez un besoin soudain de lire les instructions, de naviguer sur le Web et de commencer à vérifier les petites cases du menu. Ne fais pas ça.
Étape 5) Cliquez sur 'Suivant' jusqu'à ce que vous ne demandiez plus. Il examinera vos paramètres Existants, apportera des corrections et ajoutera les dépendances manquantes.
Cela a fonctionné pour moi.
Faire en sorte que le compositeur travaille dans Cygwin dans le monde entier est pénible ...
Les solutions que j'ai proposées:
Ne l'utilisez pas globalement. Si vous utilisez la CLI PHP à partir d'une installation Windows, elle ne reconnaîtra pas les chemins Linux utilisés par Cygwin.
Ce que j'ai fait est de le mettre dans le répertoire de base de tous les projets pour lesquels j'utilise composeur et de le faire ../composer.phar pour l'exécuter.
Cela fonctionne bien de cette façon, et il est presque globalement disponible ...
Téléchargez et compilez vos propres fichiers binaires PHP au sein de Cygwin ... Oui, en quelque sorte une surcharge.
Le moyen le plus simple consiste à installer composer à l'aide du programme d'installation Windows à partir de leur site Web, puis à copier les deux fichiers "composer" et "composer.phar" de "C:\ProgramData\Composer" dans un répertoire se trouvant dans la variable PATH. Par exemple. vous pouvez copier les fichiers dans le répertoire/bin/de cygwin. Ensuite, vous pouvez à nouveau désinstaller la "version Windows" de composer.
Mise à jour! C'est ce que j'ai fait:
Je vous suggère d'utiliser babun, il est basé sur cygwin, mais vous pouvez installer paquet par pacte, vous pouvez le faire:
pact installer php php-json php-phar
php -r "readfile (' https://getcomposer.org/installer ');" | php
alors amusez-vous.
Je l'ai corrigé en ajoutant un fichier /usr/local/bin/composer
:
nano /usr/local/bin/composer
avec le contenu suivant:
#!/bin/bash
/cygdrive/c/wamp/bin/php/php5.4.3/php "C:\wamp\bin\php\php5.4.3\composer"
Fondamentalement, vous devez appeler PHP avec un chemin de style Windows, pas un chemin de cygwin.
J'avais du mal à faire travailler Composer dans Cygwin et aucune des solutions ci-dessus ne résout mon problème. Finalement, je suis tombé sur ce commentaire dans la discussion sur les bugs de Composer github:
Ouais TBH utiliser php depuis cygwin n'est pas une bonne idée, cygwin est un environnement trop différent. Trop de piratages qui créent des échecs. En tout cas, fermer ici car il n'y a pas grand-chose à faire, j'ai bien peur :)
Je ne sais pas précisément où compositeur/Cygwin/php se mettait en marche, mais, grosso modo, mon problème était que j'avais deux installations en conflit de PHP dans les variables d'environnement, l'une provenant d'une installation de WAMP et l'autre installé avec Cygwin. L’installation de Cygwin PHP semblait se heurter à un problème de chemin d’accès. Je l'ai enlevé, en n'utilisant que le PHP WAMP, et composer a fonctionné parfaitement dans Cygwin.
J'ai résolu le problème comme ceci dans une configuration Cygwin/XAMPP:
Installez composer.phar
dans le répertoire php
de XAMPP
Créez un script Bash exécutable nommé composer
dans le répertoire php
de XAMPP:
#!/bin/bash
script_dir=$(cygpath -w $(dirname $0))
php "$script_dir/composer.phar" $@
Il est important d'utiliser cygpath -w
pour convertir le chemin en un chemin sous forme Windows.
Assurez-vous que le répertoire php
de XAMPP est accessible dans le $PATH
de Cygwin:
$ export PATH=$PATH:/cygdrive/i/dev/server/xampp/php
Il est maintenant possible d’appeler composer
de n’importe où et sans problème:
$ composer -V
Composer version 264f433ca3f007d39568b3722b4bf418f58ba15b