使用phpstudy做为本地开发环境,它本身自带了composer,却不能全局使用,打开cmd输入“composer”,提示“'composer' 不是内部或外部命令,也不是可运行的程序或批处理文件。”
对此百度提供的各种解决方法,是在系统的PATH中添加composer等等,这种方法百试不灵验,还麻烦的很。提出解决这个问题的人,只是简述了怎样添加PATH系统变量,没有从根本上去解决这个问题,然后一传十,十传百,百度搜到的文章被这种方法霸屏了。
下面阐述下详细的解决办法,首先要保证PHP已经是系统环境变量,在cmd中输入“php -v”,若能出现当前版本信息,证明PHP已经是系统环境变量,若提示其它,接着操作下一步。
在phpstudy中选择“系统服务”,或者按照网上提供的方法, 把当前运行的php版本中的“php.exe”路径,添加到系统环境变量中,然后把composer.phar(有其它文件要一起)复制到当前的php目录中,打开cmd,输入“composer”按回车
出现这个,表示composer可以使用了。
下一个问题,输入composer的相关命令后,出现“Search for a package:”后便没了下文,大概率是因为composer对参数的识别问题,打开composer.bat文件,把最后的“%1”改成“%*”
phpStudy\tools 里面的 composer.bat ,其中最后一个参数是 %1 ,其实是有问题的,这样会导致只能接受到一个参数,也就是当你输入 : composer require topthink/think-migration 只能接受到 require 而接受不到 topthink/think-migration , 所以才会出现 Search for a package: 。将 %1 改成 %* 就可以接受所有的参数。
文件如图,若没有composer.bat,请按照上面图片内容自行创建,注意自己使用php的路径和版本。
composer镜像问题
简单理解和怎样使用composer,请参照composer中国镜像网站:https://pkg.phpcomposer.com/
设置使用中文镜像,可以手动将composer.json中的url改成"url": "https://packagist.phpcomposer.com",也可以通过下面的命令修改
a). 配置只在当前项目生效
composer config repo.packagist composer https://packagist.phpcomposer.com
# 取消当前项目配置
composer config --unset repos.packagist
b). 配置全局生效
composer config -g repo.packagist composer https://packagist.phpcomposer.com
# 取消全局配置
composer config -g --unset repos.packagist
修改后你以为问题就都解决了吗,不,很有可能只是问题的开始,因为composer中文镜像网站也不见得好用,很有可能同样在某一步卡主没有下文(大概会在这一步:
composer Updating dependencies (including require-dev)),替代方案,使用阿里云的composer镜像
a). 配置只在当前项目生效
composer config repo.packagist composer https://mirrors.aliyun.com/composer/
# 取消当前项目配置
composer config --unset repos.packagist
b). 配置全局生效
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
# 取消全局配置
composer config -g --unset repos.packagist
然后,composer操作起来可能会非常快了
阿里云composer镜像网站:https://developer.aliyun.com/composer
问题到此解决。