Подтвердить что ты не робот

Композитор и Cygwin

Композитор не работает корректно в Cygwin, если вы пытаетесь установить его "глобально".

Полагая композитор .phar в /usr/local/bin/composer, тогда попытка его запуска приведет к ошибке:

Could not open input file: /usr/local/bin/composer
4b9b3361

Ответ 1

Просто споткнулся по той же проблеме и нашел решение. Проводя его здесь, на всякий случай мне придется снова искать его.

  • Настройте каталог 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
    

Ответ 2

Как насчет этого?

  • В ~/.bashrc добавьте: alias composer='php c:\\your\\path\\to\\composer.phar'
  • Перезапустите cygwin или перезагрузите bashrc, запустив source ~/.bashrc

Работает для меня, используя как родной php.exe Cygwin, так и XAMPP для Windows.

Ответ 3

Я думаю, что может работать, чтобы создать прокси вместо этого:

  • Поместите композитор .phar в /usr/local/bin/composer.phar
  • Создайте прокси-сервер bash как /usr/local/bin/composer со следующим:

    #!/bin/sh
    c:/path/to/php c:/path/to/composer.phar [email protected]
    
  • chmod + x/usr/local/bin/composer

Ответ 4

Что я сделал (очень просто):

  • Установить Composer обычно с помощью установщика Windows
  • Откройте консоль Cygwin типа composer, вы увидите что-то вроде Could not open input file: /c/route/to/your/composer/installation/bin
  • Создайте псевдоним composer='composer.bat' в профиле bash или bashrc или что-то еще
  • Готово

Я запускаю Windows 8.1

Ответ 5

У меня была та же проблема. Прочитав окончательную инструкцию от установщика композитора, он говорит, что переменную $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

И он работает.

Ответ 6

Попробуйте следующее:

  • Установите Cygwin PHP и используйте его для запуска композитора в Cygwin.

Вы можете выбрать один из двух способов хорошо работать с 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.

Расширения Cygwin PHP для использования композитора:

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.

Ответ 7

Получение композитора для работы в глобальном масштабе внутри Cygwin - это боль в прикладе...

Решения, которые я придумал:

  • Не используйте его глобально. Если вы используете PHP CLI из установки Windows, он не будет распознавать пути Linux, которые использует Cygwin.

    Я сделал это в базовом каталоге всех проектов, в которых я использую композитор, и выполняю.. /composer.phar для его запуска.

    Он отлично работает в этом режиме, и он почти доступен по всему миру...

  • Загрузите и скомпилируйте свои собственные двоичные файлы PHP в Cygwin... Да, вроде перебор.

Ответ 8

У меня была эта проблема. Большинство ответов были над моей головой, но я исправил ее без проблем.

Шаг 1) Повторно установите Composer по https://getcomposer.org/download/

Шаг 2) Оставьте его в покое. Все специальные вещи, которые вы хотите сделать, не делайте этого.

Шаг 3) Загрузите последнюю версию setup xxx.exe из https://cygwin.com/

Шаг 4) Нажмите его мышью.

ПРИМЕЧАНИЕ. На шаге 5 вы почувствуете внезапное стремление к чтению инструкций, просмотрите информацию в Интернете и начните проверку маленьких ящиков в меню. Не делайте этого.

Шаг 5) Нажмите "Далее", пока не перестанет спрашивать. Он рассмотрит ваши существующие настройки, исправить ситуацию и добавить любые отсутствующие зависимости.

Это сработало для меня.

Ответ 9

Самый простой способ - установить композитор с помощью установщика Windows со своего веб-сайта, а затем скопировать два файла "композитор" и "composer.phar" из "C:\ProgramData\Composer" в каталог, который находится в переменной PATH, Например. вы можете скопировать файлы в каталог /bin/cygwin. Впоследствии вы можете снова удалить "версию Windows" композитора.

Обновить! Это то, что я сделал:

  • Установите PHP и необходимые модули из проекта Cygwin Ports
  • Загрузите последний снимок композитора
  • Переименуйте 'composer.phar' в 'composer' и сохраните его в /usr/local/bin
  • Откройте /bin/dash.exe и запустите '/usr/bin/rebaseall'
  • Также, если 4. дает вам ошибку, композитор должен запускаться сейчас

Ответ 10

Я решил проблему, подобную этой, в настройке 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

Ответ 11

Я исправил его, добавив файл /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.

Ответ 12

Я предлагаю вам использовать babun, он основан на cygwin, но вы можете установить пакет по пакту, вы можете сделать это:

pact install php php-json php-phar

php -r "readfile (' https://getcomposer.org/installer');" | PHP

тогда наслаждайтесь.

Ответ 13

У меня возникли проблемы с работой Composer в Cygwin, и ни одно из вышеперечисленных решений не решило мою проблему. В конце концов я наткнулся на этот комментарий в обсуждении ошибок github в Composer:

Yeah TBH, использующий php из cygwin, не является отличной идеей, cygwin просто слишком отличается от среды. Слишком много хаков, которые создают сбои.. В любом случае, закрытие здесь, поскольку мы не можем сделать много, я боюсь:)

Я точно не знаю, где сработал композитор /Cygwin/php, но, в общем, моя проблема заключалась в том, что у меня было две конфликтующие установки PHP в переменных окружения: одна из установки WAMP, а другая - с Cygwin, Установка Cygwin PHP, похоже, боролась с какой-то проблемой пути. Я удалил его, используя только WAMP PHP, и композитор быстро работал в Cygwin.