Pop*_*lus 28 cygwin composer-php
如果您尝试"全局"安装,则Composer无法在Cygwin中正确运行.
将composer.phar放入/ usr/local/bin/composer,然后尝试运行它将导致错误:
Could not open input file: /usr/local/bin/composer
Run Code Online (Sandbox Code Playgroud)
aef*_*fxx 62
刚刚遇到同样的问题并找到了解决方案.将它发布在这里,万一我将不得不再次查找它.
在以下位置设置bin目录/home/my-username:
cd ~
mkdir bin
Run Code Online (Sandbox Code Playgroud)将composer.phar(或任何其他那些正在兴起的新的PHP imps)移动到~/bin目录中并确保设置它的执行位:
# Notice how I got rid of the superfluous `.phar` extension
mv /path/to/composer.phar ~/bin/composer
chmod +x ~/bin/composer
Run Code Online (Sandbox Code Playgroud)告诉cygwin您~/bin在搜索路径中包含您的目录:
打开文件~/.bash_profile并取消注释以下段落...
# Set PATH so it includes user's private bin if it exists
if [ -d "${HOME}/bin" ] ; then
PATH="${HOME}/bin:${PATH}"
fi
Run Code Online (Sandbox Code Playgroud)现在,最重要的部分:
一个包装脚本,帮助Win的本机PHP解析Unix样式路径(因为Windows不知道如何处理/cygdrive/...路径,导致问题).
cd ~/bin
touch php
chmod +x php
Run Code Online (Sandbox Code Playgroud)
编辑完包装脚本后~/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" "$@"
Run Code Online (Sandbox Code Playgroud)现在重新启动你的shell,它应该正确地调用PHP解释器,只要它偶然发现了一个#!/usr/bin/env phpshebang.只需发出一个:
composer --help
Run Code Online (Sandbox Code Playgroud)rko*_*kok 10
这个怎么样?
alias composer='php c:\\your\\path\\to\\composer.phar'source ~/.bashrc使用Cygwin的本机php.exe和XAMPP的Windows特定版本,对我有用.
我认为可能有用的是建立一个代理:
使用以下命令创建一个bash代理作为/ usr/local/bin/composer:
#!/bin/sh
c:/path/to/php c:/path/to/composer.phar $@
Run Code Online (Sandbox Code Playgroud)chmod + x/usr/local/bin/composer
尝试这个:
您可以选择以下两种方式之一在 Cygwin 中使用 PHP+Composer 正常工作:
安装 Cygwin PHP 并在 Cygwin 中安装 composer.phar。
安装 Windows PHP 并安装 Windows Composer,然后从 Cygwin 调用 then。(Windows XAMMP+Composer 在 cmd 中有别名)
Your problem is caused by that Cygwin Composer is ruining by Windows PHP on Cygwin, so it can not recognize the file path.
After install Cygwin PHP, the composer will integrates with Cygwin PHP then fit to Cygwin's filepath.
php
php-json
php-mbstring
php-phar
php-zip
php-posix
Run Code Online (Sandbox Code Playgroud)
You can install other PHP extension when composer's package is needed such as php-xmlwriter, php-tokenizer, php-ctype.
If you have already installed apt-cyg, there are installation command above:
apt-cyg install php php-json php-mbstring php-phar php-zip php-posix
apt-cyg install php-xmlwriter php-tokenizer php-ctype
Run Code Online (Sandbox Code Playgroud)
Then install 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
Run Code Online (Sandbox Code Playgroud)
I recommend using Windows PHP + Windows Composer, and call then in Cygwin, it because the Cygwin PHP is not much stable than Windows PHP.
| 归档时间: |
|
| 查看次数: |
15275 次 |
| 最近记录: |