Композитор не работает корректно в Cygwin, если вы пытаетесь установить его "глобально".
Полагая композитор .phar в /usr/local/bin/composer, тогда попытка его запуска приведет к ошибке:
Could not open input file: /usr/local/bin/composer
Композитор не работает корректно в Cygwin, если вы пытаетесь установить его "глобально".
Полагая композитор .phar в /usr/local/bin/composer, тогда попытка его запуска приведет к ошибке:
Could not open input file: /usr/local/bin/composer
Просто споткнулся по той же проблеме и нашел решение. Проводя его здесь, на всякий случай мне придется снова искать его.
Настройте каталог bin
прямо под /home/my-username
:
cd ~
mkdir bin
Переместите composer.phar
(или любой другой из этих замечательных новичков PHP, которые находятся на подъеме)
в каталог ~/bin
и убедитесь, что установить он исполняемый бит:
# Notice how I got rid of the superfluous `.phar` extension
mv /path/to/composer.phar ~/bin/composer
chmod +x ~/bin/composer
Расскажите cygwin
о том, чтобы указать ваш каталог ~/bin
в пути поиска:
Откройте файл ~/.bash_profile
и раскомментируйте следующий абзац...
# Set PATH so it includes user private bin if it exists
if [ -d "${HOME}/bin" ] ; then
PATH="${HOME}/bin:${PATH}"
fi
Теперь, для самой важной части:
Обертка script, которая помогает Win native PHP разрешать пути стиля Unix (что вызывает
проблема ведь, поскольку Windows не знает, как обращаться с путями /cygdrive/...
).
cd ~/bin
touch php
chmod +x php
После редактирования обертки script ~/bin/php
следует читать:
#!/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" "[email protected]"
Теперь перезапустите вашу оболочку, и она должна корректно вызывать интерпретатор PHP всякий раз, когда это
натыкается на shebang #!/usr/bin/env php
. Просто выполните a:
composer --help
Как насчет этого?
alias composer='php c:\\your\\path\\to\\composer.phar'
source ~/.bashrc
Работает для меня, используя как родной php.exe Cygwin, так и XAMPP для Windows.
Я думаю, что может работать, чтобы создать прокси вместо этого:
Создайте прокси-сервер bash как /usr/local/bin/composer со следующим:
#!/bin/sh
c:/path/to/php c:/path/to/composer.phar [email protected]
chmod + x/usr/local/bin/composer
Что я сделал (очень просто):
composer
, вы увидите что-то вроде Could not open input file: /c/route/to/your/composer/installation/bin
composer='composer.bat'
в профиле bash или bashrc или что-то ещеЯ запускаю Windows 8.1
У меня была та же проблема. Прочитав окончательную инструкцию от установщика композитора, он говорит, что переменную $PATH необходимо перезагрузить. Я перезагрузил свой компьютер, а затем связал биток Composer с /usr/local/bin
.
Сначала найдите корзину композитора:
/cygdrive/c/ProgramData/ComposerSetup/bin/composer
Затем, отвечая Seldaek, попробовав нерабочую символическую ссылку, я сделал:
nano /usr/local/bin/composer
#!/bin/sh
/cygdrive/c/ProgramData/ComposerSetup/bin/composer [email protected]
chmod +x /usr/local/bin/composer
И он работает.
Попробуйте следующее:
Вы можете выбрать один из двух способов хорошо работать с PHP + Composer в Cygwin:
Установите Cygwin PHP и установите composer.phar в Cygwin.
Установите Windows PHP и установите Winodows Composer, а затем вызовите его из Cygwin. (Windows XAMMP + Composer с псевдонимом в cmd)
Ваша проблема вызвана тем, что Cygwin Composer разрушает Windows PHP на Cygwin, поэтому он не может распознать путь к файлу.
После установки Cygwin PHP композитор будет интегрироваться с Cygwin PHP, а затем подгоняется к файловому пути Cygwin.
php
php-json
php-mbstring
php-phar
php-zip
php-posix
Вы можете установить другое расширение PHP, если требуется пакет композитора, например php-xmlwriter
, php-tokenizer
, php-ctype
.
Если вы уже установили apt-cyg, есть команда установки выше:
apt-cyg install php php-json php-mbstring php-phar php-zip php-posix
apt-cyg install php-xmlwriter php-tokenizer php-ctype
Затем установите Composer через 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
Я рекомендую использовать Windows PHP + Windows Composer и вызывать в Cygwin, потому что Cygwin PHP не намного стабилен, чем Windows PHP.
Получение композитора для работы в глобальном масштабе внутри Cygwin - это боль в прикладе...
Решения, которые я придумал:
Не используйте его глобально. Если вы используете PHP CLI из установки Windows, он не будет распознавать пути Linux, которые использует Cygwin.
Я сделал это в базовом каталоге всех проектов, в которых я использую композитор, и выполняю.. /composer.phar для его запуска.
Он отлично работает в этом режиме, и он почти доступен по всему миру...
Загрузите и скомпилируйте свои собственные двоичные файлы PHP в Cygwin... Да, вроде перебор.
У меня была эта проблема. Большинство ответов были над моей головой, но я исправил ее без проблем.
Шаг 1) Повторно установите Composer по https://getcomposer.org/download/
Шаг 2) Оставьте его в покое. Все специальные вещи, которые вы хотите сделать, не делайте этого.
Шаг 3) Загрузите последнюю версию setup xxx.exe из https://cygwin.com/
Шаг 4) Нажмите его мышью.
ПРИМЕЧАНИЕ. На шаге 5 вы почувствуете внезапное стремление к чтению инструкций, просмотрите информацию в Интернете и начните проверку маленьких ящиков в меню. Не делайте этого.
Шаг 5) Нажмите "Далее", пока не перестанет спрашивать. Он рассмотрит ваши существующие настройки, исправить ситуацию и добавить любые отсутствующие зависимости.
Это сработало для меня.
Самый простой способ - установить композитор с помощью установщика Windows со своего веб-сайта, а затем скопировать два файла "композитор" и "composer.phar" из "C:\ProgramData\Composer" в каталог, который находится в переменной PATH, Например. вы можете скопировать файлы в каталог /bin/cygwin. Впоследствии вы можете снова удалить "версию Windows" композитора.
Обновить! Это то, что я сделал:
Я решил проблему, подобную этой, в настройке Cygwin/XAMPP:
Установите composer.phar
в каталог XAMPP php
Создайте исполняемый файл Bash script с именем composer
в каталоге XAMPP php
:
#!/bin/bash
script_dir=$(cygpath -w $(dirname $0))
php "$script_dir/composer.phar" [email protected]
Важно использовать cygpath -w
для преобразования пути к пути в форме Windows.
Убедитесь, что каталог XAMPP php
доступен в Cygwin $PATH
:
$ export PATH=$PATH:/cygdrive/i/dev/server/xampp/php
Теперь можно вызвать composer
из любого места, которое вам нравится без проблем:
$ composer -V
Composer version 264f433ca3f007d39568b3722b4bf418f58ba15b
Я исправил его, добавив файл /usr/local/bin/composer
:
nano /usr/local/bin/composer
со следующим содержимым:
#!/bin/bash
/cygdrive/c/wamp/bin/php/php5.4.3/php "C:\wamp\bin\php\php5.4.3\composer"
В принципе, вы должны вызывать PHP с помощью стиля Windows, а не для пути cygwin.
Я предлагаю вам использовать babun, он основан на cygwin, но вы можете установить пакет по пакту, вы можете сделать это:
pact install php php-json php-phar
php -r "readfile (' https://getcomposer.org/installer');" | PHP
тогда наслаждайтесь.
У меня возникли проблемы с работой Composer в Cygwin, и ни одно из вышеперечисленных решений не решило мою проблему. В конце концов я наткнулся на этот комментарий в обсуждении ошибок github в Composer:
Yeah TBH, использующий php из cygwin, не является отличной идеей, cygwin просто слишком отличается от среды. Слишком много хаков, которые создают сбои.. В любом случае, закрытие здесь, поскольку мы не можем сделать много, я боюсь:)
Я точно не знаю, где сработал композитор /Cygwin/php, но, в общем, моя проблема заключалась в том, что у меня было две конфликтующие установки PHP в переменных окружения: одна из установки WAMP, а другая - с Cygwin, Установка Cygwin PHP, похоже, боролась с какой-то проблемой пути. Я удалил его, используя только WAMP PHP, и композитор быстро работал в Cygwin.