symfony2 使用symfony composer包 update命令之后,不动了,怎么解决

> 博客详情
摘要: 本文介绍如何加速Composer的更新速度
开始用Composer管理PHP的包依赖后,感觉神清气爽啊,不过问题很快就来了,更新速度太TMD的慢了啊有木有,基本到了没法用的地步。怎么办?那就是VPN啦。买个VPN,问题一下解决了。但是,公司的路由器是关闭VPN相关的端口的,只开放个80,8000等端口走走HTTP协议。怎么办?程序员们都知道,_有个好用又免费的神器,就是GoAgent。_ (这篇文章写的时候,GoAgent还能用,现在基本用不了了,不过另外一个代理,Shadowsockets更加稳定。如果有个海外的VPS,就搭建一个shadowsockets的服务端,非常好用!推荐[HostShare](/page.aspx?c=referral&u=9223),便宜稳定)
## 让命令行使用代理 ##
怎么安装Shadowsockets就不说啦,网上教程一大堆,自己找去。安装还后,各种浏览器都可以开心的用上代理啦,从此Github的连接速度保持稳定。但是,Composer update是通过命令行运行的,命令行怎么用上代理呢?
&!-- lang: shell --&
set http_proxy=http://127.0.0.1:1080//Windows
export http_proxy=http://127.0.0.1:1080 //linux or Mac OS
再运行Composer update的时候,速度变飞快了有木有?!
## 让git使用代理 ##
有时候,需要通过git下载些代码,怎么也让git也使用代理呢?
&!-- lang: shell --&
git config --global http.proxy http://127.0.0.1:1080
查看下是否成功了
&!-- lang: shell --&
git config --get –--global http.proxy
----------
## PHP5.6 OpenSSL错误 ##
最近新换设备,安装了最新版本的xampp,结果发现composer不断报SSL routines:SSL23_GET_SERVER_HELLO错误,百度下,有人说是证书导致,目测不是这个原因。Google一番,github上挺多人有这个问题,几番比较下,应该是openssl版本的问题,干脆直接换旧一点版本的xampp,于是换到php版本是5.5的。重装后,顺利解决。
### Linux or Mac
如果使用的是mac或者linux,发现export http_proxy这个方法经常无法工作,经过几番google,发现有个叫做proxychains的软件,尝试后发现确实能保证命令行都能使用sockets代理了。
人打赏支持
码字总数 25802
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥Symfony是一个基于MVC模式的面向对象的PHP5框架。Symfony允许在一个web应用中分离事务控制,服务逻辑和表示层。
Symfony是一个强大的基于PHP的Web开发框架,是一个基于MVC模式的面向对象的PHP5框架。Symfony允许在一个web应用中分离事务控制,服务逻辑和表示层。 在这里我们用十分钟的时间来做一个简单的增删改查的程序, 任何不熟悉Symfony的人都可以通过这个教程完成自己的第一个Symfony程序。
如果需要这个样例程序的全部源代码,可以访问,或者通过下面的方式获取源代码:
$git clone /saharabear/symfony-sample.git
项目初始化
首先,需要你在自己的电脑中安装PHP环境并安装git.这方面的内容属于基础内容,网络上有大量的教程,在这里就不多介绍了,不过要提示的一点是:PHP从5.4开始, 已经内置了测试用服务器,Symfony也拥抱了这个由PHP内置的服务器,只需要在命令行中使用$php app/console server:run 就可以 启动基于Symfony框架的PHP程序进行测试,因此不必要使用XAMPP这一类复杂的集成环境,直接安装PHP并保证在命令行下可以执行php命令就可以了。
然后,我们需要建立一个新的目录,名字叫symfony-sample,Symfony使用一个叫composer的程序管理各种类库的依赖关系,因此如果你的机器上 安装了composer,就可以直接跳过这一步,如果没有安装,可以用下面的命令安装最新版本的composer.
$cd symfony-sample
$curl -sS https://getcomposer.org/installer | php
如果希望了解更多关于的信息,可以参考网站。
安装完成composer后,我们可以开始安装当前最新版本的Symfony,2.4.0
$php composer.phar create-project symfony/framework-standard-edition mysampleproject/ 2.4.0
安装过程中,需要填写数据库等信息,在这个例子中,我们会使用sqlite数据库,因此你可以一路按回车键,先不要关心这一切配置应该如何填写。反正 Symfony会在安装成功后,生成一个配置文件,叫app/config/parameters.yml,下面我会提供一个parameters.yml文件的 内容样本,只要复制进去就可以了,先不必关注这么多细节。
刚才创建mysampleproject以后,在symfony-sample目录下生成了mysampleproject目录,我习惯于将程序放在项目的根目录下,因此执行下面的几个命令, 就可以把项目从symfony-sample/mysampleproject目录中,移到symfony-sample目录中
$mv mysampleproject/* ./
$rm -rf mysampleproject
理论上来讲,我们已经完成了Symfony项目的创建,不过刚才提到的parameters.yml文件还没有解释。这个parameters.yml是Symfony的全局配置文件, 无论是数据库配置信息还是其他的各种配置,都可以放在这个文件中。下面是我们需要使用的测试用的parameters.yml,记得把最后一行的值修改为一个随机值
# This file is auto-generated during the composer install
parameters:
database_driver: pdo_sqlite
database_host: null
database_port: null
database_name: symfony-sample
database_user: null
database_password: null
database_path: %kernel.root_dir%/../app/cache/dev/symfony-sample.db
mailer_transport: smtp
mailer_host: 127.0.0.1
mailer_user: null
mailer_password: null
locale: zh_CN
secret: ChangeThisLineAsYouWish_ioiuqwoieru
直接用这段,替换掉app/config/parameters.yml文件中的内容,然后编辑app/config/config.yml,找到下面几行,把最后一行添加进去并保存。
&%database_driver%&
&%database_host%&
&%database_port%&
&%database_name%&
&%database_user%&
password: &%database_password%&
&%database_path%&
好了,这样我们就完成了基本的Symfony程序的配置,你现在有了一个配置好了数据库,邮件发送器,日志系统的基本程序原型。下面,我们就开始编写自己的Symfony程序。
建立Bundle
先说一下什么是Bundle。Symfony是以DI为核心的,可能你不知道什么是DI,没关系,这不重要,你可以把Symfony的DI理解成为一个功 能池,把程序中的所有功能都做成Bundle,或者你把Bundle理解成一组php文件组合而成的程序就可以。 比如用户注册,登录功能做成一个Bundle,你也可以把一个论坛的发帖回贴功能做成一个Bundle,自然也可以把文章管理做成一个Bundle,然后 用一个Bundle去调用和配置不同的Bundle,那么你就可以把网站组装起来了,而你写的各种Bundle,在其他的应用程序中还可以继续复用,这样 写的Bundle越多,可复用性就越强,制作新项目的时候也越有利。
我们现在就来建立自己的Bundle.在命令行中,使用命令:
$php app/console generate:bundle
Bundle namespace: Symfony/Bundle/SampleBundle
Bundle name [SymfonySampleBundle]:
Target directory [/home/saharabear/workspace/symfony-sample/src]:
Configuration format (yml, xml, php, or annotation): annotation
Do you want to generate the whole directory structure [no]? yes
Do you confirm generation [yes]? yes
Generating the bundle code: OK
Checking that the bundle is autoloaded: OK
Confirm automatic update of your Kernel [yes]? yes
Enabling the bundle inside the Kernel: OK
Confirm automatic update of the Routing [yes]? yes
这样就成功建立了我们的Bundle,名字叫SymfonySampleBundle,我们使用的Bundle namespace是Symfony/Bundle/SampleBundle,这是一种约定,我们还可以建立其他的Bundle,比如Symfony /Bundle/PostBundle, 或者Symfony/Bundle/ArticleBundle,而对应的Bundle name就分别是SymfonyPostBundle或者SymfonyArticleBundle。你也可以自己建立这几个Bundle,这并不会影响 当前我们的教程。
对了,在我们建立的Bundle中,分别会生成下面几个目录:
Entity:这个目录并不是必须的,很多情况下只有在生成实体的时候才会生成,放置模型,也就是MVC中的M
Controller:这个目录会生成DefaultController.php,你可以在这里建立自己的Controller控制器,也就是MVC中的C
Resources:这个目录下面还有子目录,其中views放置的是模板,也就是MVC中的V,而public放置的是静态文件,比如js, css, images等等
Tests:放置单元测试与集成测试的代码,在这个样例程序中暂时不需要
DependencyInjection:与DI相关的目录,暂时也不需要去了解
SymfonySampleBundle.php:当前这个Bundle的定义文件
更多细节可以去阅读的官方文档,而当前的重点是把这个Symfony的样例程序运行起来。
在MVC的设计理念中,M是最重要的,因为M表达的内容是业务逻辑。我觉得如果这个地方往深入去探讨,会一直探讨到富血模型或者贫血模型,不过目前在这个教程中根本 不需要考虑这么多,你只需要知道实体就是MVC中的M,用于表达业务逻辑。比如说,我们要开发一个文章管理的系统,那么文章本身就代表的业务逻辑。比如,我们的文章要有 标题,内容,作者,那么这三项就属于业务逻辑,而标题不能够为空,不能超过200人瞎子,内容不能为空,作者却是可以为空的,这些也属于业务逻辑。同时,这个文章需要被 存储起来,比如存储到数据库中,那么这个M就应该能够映射到数据库的表中。我们把这个M,叫实体。
还是少说废话,直接上代码。那么如何建立实体呢?当然不是从头一点一点地写,而是直接用下面的命令生成:
$php app/console generate:doctrine:entity
Welcome to the Doctrine2 entity generator
This command helps you generate Doctrine2 entities.
First, you need to give the entity name you want to generate.
You must use the shortcut notation like AcmeBlogBundle:Post.
The Entity shortcut name: SymfonySampleBundle:Article
Determine the format to use for the mapping information.
Configuration format (yml, xml, php, or annotation) [annotation]:
Instead of starting with a blank entity, you can add some fields now.
Note that the primary key will be added automatically (named id).
Available types: array, simple_array, json_array, object,
boolean, integer, smallint, bigint, string, text, datetime, datetimetz,
date, time, decimal, float, blob, guid.
New field name (press
to stop adding fields): title
Field type [string]:
Field length [255]: 200
New field name (press
to stop adding fields): content
Field type [string]: text
New field name (press
to stop adding fields): author
Field type [string]:
Field length [255]: 20
New field name (press
to stop adding fields):
Do you want to generate an empty repository class [no]? yes
Summary before generation
You are going to generate a &SymfonySampleBundle:Article& Doctrine2 entity
using the &annotation& format.
Do you confirm generation [yes]? yes
Entity generation
Generating the entity code: OK
You can now start using the generated code!
经过这些命令,你会发现在Entity中建立了新的文件Article.php,代码如下:
namespace Symfony\Bundle\SampleBundle\E
use Doctrine\ORM\Mapping as ORM;
* @ORM\Table()
* @ORM\Entity(repositoryClass=&Symfony\Bundle\SampleBundle\Entity\ArticleRepository&)
class Article
* @var integer
* @ORM\Column(name=&id&, type=&integer&)
* @ORM\GeneratedValue(strategy=&AUTO&)
* @var string
* @ORM\Column(name=&title&, type=&string&, length=200)
* @var string
* @ORM\Column(name=&content&, type=&text&)
* @var string
* @ORM\Column(name=&author&, type=&string&, length=20)
* @return integer
public function getId()
return $this-&
* Set title
* @param string $title
* @return Article
public function setTitle($title)
$this-&title = $
* Get title
* @return string
public function getTitle()
return $this-&
* Set content
* @param string $content
* @return Article
public function setContent($content)
$this-&content = $
* Get content
* @return string
public function getContent()
return $this-&
* Set author
* @param string $author
* @return Article
public function setAuthor($author)
$this-&author = $
* Get author
* @return string
public function getAuthor()
return $this-&
你可以一行不改地使用这些代码。这时候我们再来做几个神奇的操作:
$php app/console doctrine:schema:update --force
这个操作,已经帮助你通过Article.php建立了数据库和数据表,你不需要自己操作这个过程,下面我们还会对Article.php进行改造,而到时候只需要重新 执行上面的这个操作,Symfony会帮助你自动修改数据库的表结构。
上面我们创建了Article.php,既然这个实体代表了具体的业务逻辑,因此我们要考虑几个现实的问题:
用户必须填写标题和内容
用户填写的标题不能超过200个字
用户可以不填写作者
这些就属于业务逻辑,而我们可以修改Article.php如下,以增加相应的业务逻辑的约束:
namespace Symfony\Bundle\SampleBundle\E
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as A
* @ORM\Table()
* @ORM\Entity(repositoryClass=&Symfony\Bundle\SampleBundle\Entity\ArticleRepository&)
class Article
* @var integer
* @ORM\Column(name=&id&, type=&integer&)
* @ORM\GeneratedValue(strategy=&AUTO&)
* @var string
* @Assert\NotBlank(message=&标题不可为空&)
* @Assert\Length(
maxMessage=&标题不能超过200个字&
* @ORM\Column(name=&title&, type=&string&, length=200)
* @var string
* @Assert\NotBlank(message=&文章内容不可为空&)
* @ORM\Column(name=&content&, type=&text&)
* @var string
* @ORM\Column(name=&author&, type=&string&, length=20,nullable=true)
* @return integer
public function getId()
return $this-&
* Set title
* @param string $title
* @return Article
public function setTitle($title)
$this-&title = $
* Get title
* @return string
public function getTitle()
return $this-&
* Set content
* @param string $content
* @return Article
public function setContent($content)
$this-&content = $
* Get content
* @return string
public function getContent()
return $this-&
* Set author
* @param string $author
* @return Article
public function setAuthor($author)
$this-&author = $
* Get author
* @return string
public function getAuthor()
return $this-&
然后执行同步数据库的操作:
bash-4.2$ php app/console doctrine:schema:update --force
Updating database schema...
Database schema updated successfully! &1& queries were executed
增删改查示例
好了,我们来做一个针对文章的增删改查操作。首先请执行下面的命令:
bash-4.2$ php app/console generate:doctrine:crud
Welcome to the Doctrine2 CRUD generator
This command helps you generate CRUD controllers and templates.
First, you need to give the entity for which you want to generate a CRUD.
You can give an entity that does not exist yet and the wizard will help
you defining it.
You must use the shortcut notation like AcmeBlogBundle:Post.
The Entity shortcut name: SymfonySampleBundle:Article
By default, the generator creates two actions: list and show.
You can also ask it to generate &write& actions: new, update, and delete.
Do you want to generate the &write& actions [no]? yes
Determine the format to use for the generated CRUD.
Configuration format (yml, xml, php, or annotation) [annotation]: annotation
Determine the routes prefix (all the routes will be &mounted& under this
prefix: /prefix/, /prefix/new, ...).
Routes prefix [/article]: /article
Summary before generation
You are going to generate a CRUD controller for &SymfonySampleBundle:Article&
using the &annotation& format.
Do you confirm generation [yes]? yes
CRUD generation
Generating the CRUD code: OK
Generating the Form code: OK
You can now start using the generated code!
然后请编辑DefaultController.php中的indexAction如下:
* @Route(&/&,name=&welcome&)
* @Template()
public function indexAction()
return array();
编辑Resource/views/Default/index.html.twig内容如下:
&a href=&{{path('article')}}&&文章管理&/a&
让我们看看神奇的事情,启动内置的测试服务器:
$php app/console server:run
好了,我们已经完成了这十分钟的博客,一切的代码都在Controller/ArticleController.php,Form /ArticleType.php,Resource/views/Article/*.html.twig中,我们已经完成了最基本的文章管理功能。当 然在你熟悉Symfony以后,未必需要完全依靠Symfony帮你生成这些增删改查操作,可是起码Symfony用一个命令让一切都先运行起来了,这不 就是我们所要的原型吗?
更进一步学习
Symfony是一个好框架,可是学习成本也不低,下面这些文档都是非常值得学习的,在弄明白上面的代码如何工作之后,你就可以开始学习下面的内容:
Copyright &
All Rights Reserved &&&&&&命令行 | Composer 中文文档 | Composer 中文网
你已经学会了如何使用命令行界面做一些事情。本章将向你介绍所有可用的命令。
为了从命令行获得帮助信息,请运行 composer 或者 composer list 命令,然后结合 --help 命令来获得更多的帮助信息。
下列参数可与每一个命令结合使用:
--verbose (-v): 增加反馈信息的详细度。
-v 表示正常输出。
-vv 表示更详细的输出。
-vvv 则是为了 debug。
--help (-h): 显示帮助信息。
--quiet (-q): 禁止输出任何信息。
--no-interaction (-n): 不要询问任何交互问题。
--working-dir (-d): 如果指定的话,使用给定的目录作为工作目录。
--profile: 显示时间和内存使用信息。
--ansi: 强制 ANSI 输出。
--no-ansi: 关闭 ANSI 输出。
--version (-V): 显示当前应用程序的版本信息。
进程退出代码
1: 通用/未知错误
2: 依赖关系处理错误
初始化 init
那一章我们看到了如何手动创建 composer.json 文件。实际上还有一个 init 命令可以更容易的做到这一点。
当您运行该命令,它会以交互方式要求您填写一些信息,同时聪明的使用一些默认值。
php composer.phar init
初始化-参数
--name: 包的名称。
--description: 包的描述。
--author: 包的作者。
--homepage: 包的主页。
--require: 需要依赖的其它包,必须要有一个版本约束。并且应该遵循 foo/bar:1.0.0 这样的格式。
--require-dev: 开发版的依赖包,内容格式与 --require 相同。
--stability (-s): minimum-stability 字段的值。
安装 install
install 命令从当前目录读取 composer.json 文件,处理了依赖关系,并把其安装到 vendor 目录下。
php composer.phar install
如果当前目录下存在 composer.lock 文件,它会从此文件读取依赖版本,而不是根据 composer.json 文件去获取依赖。这确保了该库的每个使用者都能得到相同的依赖版本。
如果没有 composer.lock 文件,composer 将在处理完依赖关系后创建它。
--prefer-source: 下载包的方式有两种: source
和 dist。对于稳定版本 composer 将默认使用 dist 方式。而 source 表示版本控制源 。如果 --prefer-source 是被启用的,composer 将从 source 安装(如果有的话)。如果想要使用一个 bugfix 到你的项目,这是非常有用的。并且可以直接从本地的版本库直接获取依赖关系。
--prefer-dist: 与 --prefer-source 相反,composer 将尽可能的从 dist 获取,这将大幅度的加快在 build servers 上的安装。这也是一个回避 git 问题的途径,如果你不清楚如何正确的设置。
--dry-run: 如果你只是想演示而并非实际安装一个包,你可以运行 --dry-run 命令,它将模拟安装并显示将会发生什么。
--dev: 安装 require-dev 字段中列出的包(这是一个默认值)。
--no-dev: 跳过 require-dev 字段中列出的包。
--no-scripts: 跳过 composer.json 文件中定义的脚本。
--no-plugins: 关闭 plugins。
--no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
--optimize-autoloader (-o): 转换 PSR-0/4 autoloading 到 classmap 可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
更新 update
为了获取依赖的最新版本,并且升级 composer.lock 文件,你应该使用 update 命令。
php composer.phar update
这将解决项目的所有依赖,并将确切的版本号写入 composer.lock。
如果你只是想更新几个包,你可以像这样分别列出它们:
php composer.phar update vendor/package vendor/package2
你还可以使用通配符进行批量更新:
php composer.phar update vendor/*
--prefer-source: 当有可用的包时,从 source 安装。
--prefer-dist: 当有可用的包时,从 dist 安装。
--dry-run: 模拟命令,并没有做实际的操作。
--dev: 安装 require-dev 字段中列出的包(这是一个默认值)。
--no-dev: 跳过 require-dev 字段中列出的包。
--no-scripts: 跳过 composer.json 文件中定义的脚本。
--no-plugins: 关闭 plugins。
--no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
--optimize-autoloader (-o): 转换 PSR-0/4 autoloading 到 classmap 可以获得更快的加载支持。特别是在生产环境下建议这么做,但由于运行需要一些时间,因此并没有作为默认值。
--lock: 仅更新 lock 文件的 hash,取消有关 lock 文件过时的警告。
--with-dependencies 同时更新白名单内包的依赖关系,这将进行递归更新。
申明依赖 require
require 命令增加新的依赖包到当前目录的 composer.json 文件中。
php composer.phar require
在添加或改变依赖时, 修改后的依赖关系将被安装或者更新。
如果你不希望通过交互来指定依赖包,你可以在这条令中直接指明依赖包。
php composer.phar require vendor/package:2.* vendor/package2:dev-master
申明依赖-参数
--prefer-source: 当有可用的包时,从 source 安装。
--prefer-dist: 当有可用的包时,从 dist 安装。
--dev: 安装 require-dev 字段中列出的包。
--no-update: 禁用依赖关系的自动更新。
--no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
--update-with-dependencies 一并更新新装包的依赖。
全局执行 global
global 命令允许你在
目录下执行其它命令,像 install、require 或 update。
并且如果你将 $COMPOSER_HOME/vendor/bin 加入到了 $PATH 环境变量中,你就可以用它在命令行中安装全局应用,下面是一个例子:
php composer.phar global require fabpot/php-cs-fixer:dev-master
现在 php-cs-fixer 就可以在全局范围使用了(假设你已经设置了你的 PATH)。如果稍后你想更新它,你只需要运行 global update:
php composer.phar global update
搜索 search
search 命令允许你为当前项目搜索依赖包,通常它只搜索 packagist.org 上的包,你可以简单的输入你的搜索条件。
php composer.phar search monolog
您也可以通过传递多个参数来进行多条件搜索。
--only-name (-N): 仅针对指定的名称搜索(完全匹配)。
列出所有可用的软件包,你可以使用 show 命令。
php composer.phar show
如果你想看到一个包的详细信息,你可以输入一个包名称。
php composer.phar show monolog/monolog
: monolog/monolog
versions : master-dev, 1.0.2, 1.0.1, 1.0.0, 1.0.0-RC1
: monolog/monolog
: [git] /Seldaek/monolog.git 3d4e60d0cbc4b888fe5ad223d8da
: [zip] /Seldaek/monolog/zipball/3d4e60d0cbc4b888fe5ad223d8da 3d4e60d0cbc4b888fe5ad223d8da
Monolog : src/
php &=5.3.0
你甚至可以输入一个软件包的版本号,来显示该版本的详细信息。
php composer.phar show monolog/monolog 1.0.2
--installed (-i): 列出已安装的依赖包。
--platform (-p): 仅列出平台软件包(PHP 与它的扩展)。
--self (-s): 仅列出当前项目信息。
依赖性检测 depends
depends 命令可以查出已安装在你项目中的某个包,是否正在被其它的包所依赖,并列出他们。
php composer.phar depends --link-type=require monolog/monolog
nrk/monolog-fluent
propel/propel
symfony/monolog-bridge
symfony/symfony
依赖性检测-参数
--link-type: 检测的类型,默认为 require 也可以是 require-dev。
有效性检测 validate
在提交 composer.json 文件,和创建 tag 前,你应该始终运行 validate 命令。它将检测你的 composer.json 文件是否是有效的
php composer.phar validate
有效性检测参数
--no-check-all: Composer 是否进行完整的校验。
依赖包状态检测 status
如果你经常修改依赖包里的代码,并且它们是从 source(自定义源)进行安装的,那么 status 命令允许你进行检查,如果你有任何本地的更改它将会给予提示。
php composer.phar status
你可以使用 --verbose 系列参数(-v|vv|vvv)来获取更详细的详细:
php composer.phar status -v
You have changes in the following dependencies:
vendor/seld/jsonlint:
M README.mdown
自我更新 self-update
将 Composer 自身升级到最新版本,只需要运行 self-update 命令。它将替换你的 composer.phar 文件到最新版本。
php composer.phar self-update
如果你想要升级到一个特定的版本,可以这样简单的指定它:
php composer.phar self-update 1.0.0-alpha7
如果你已经为整个系统安装 Composer(参见 ),你可能需要在 root 权限下运行它:
sudo composer self-update
自我更新-参数
--rollback (-r): 回滚到你已经安装的最后一个版本。
--clean-backups: 在更新过程中删除旧的备份,这使得更新过后的当前版本是唯一可用的备份。
更改配置 config
config 命令允许你编辑 Composer 的一些基本设置,无论是本地的 composer.json 或者全局的 config.json 文件。
php composer.phar config --list
更改配置-使用方法
config [options] [setting-key] [setting-value1] ... [setting-valueN]
setting-key 是一个配置选项的名称,setting-value1 是一个配置的值。可以使用数组作为配置的值(像 github-protocols),多个 setting-value 是允许的。
有效的配置选项,请查看“架构”章节的
更改配置-参数
--global (-g): 操作位于 $COMPOSER_HOME/config.json 的全局配置文件。如果不指定该参数,此命令将影响当前项目的 composer.json 文件,或 --file 参数所指向的文件。
--editor (-e): 使用文本编辑器打开 composer.json 文件。默认情况下始终是打开当前项目的文件。当存在 --global 参数时,将会打开全局 composer.json 文件。
--unset: 移除由 setting-key 指定名称的配置选项。
--list (-l): 显示当前配置选项的列表。当存在 --global 参数时,将会显示全局配置选项的列表。
--file=&...& (-f): 在一个指定的文件上操作,而不是 composer.json。注意:不能与 --global 参数一起使用。
修改包来源
除了修改配置选项, config 命令还支持通过以下方法修改来源信息:
php composer.phar config repositories.foo vcs /foo/bar
创建项目 create-project
你可以使用 Composer 从现有的包中创建一个新的项目。这相当于执行了一个 git clone 或 svn checkout 命令后将这个包的依赖安装到它自己的 vendor 目录。
此命令有几个常见的用途:
你可以快速的部署你的应用。
你可以检出任何资源包,并开发它的补丁。
多人开发项目,可以用它来加快应用的初始化。
要创建基于 Composer 的新项目,你可以使用 &create-project& 命令。传递一个包名,它会为你创建项目的目录。你也可以在第三个参数中指定版本号,否则将获取最新的版本。
如果该目录目前不存在,则会在安装过程中自动创建。
php composer.phar create-project doctrine/orm path 2.2.*
此外,你也可以无需使用这个命令,而是通过现有的 composer.json 文件来启动这个项目。
默认情况下,这个命令会在 packagist.org 上查找你指定的包。
创建项目-参数
--repository-url: 提供一个自定义的储存库来搜索包,这将被用来代替 packagist.org。可以是一个指向 composer 资源库的 HTTP URL,或者是指向某个 packages.json 文件的本地路径。
--stability (-s): 资源包的最低稳定版本,默认为 stable。
--prefer-source: 当有可用的包时,从 source 安装。
--prefer-dist: 当有可用的包时,从 dist 安装。
--dev: 安装 require-dev 字段中列出的包。
--no-install: 禁止安装包的依赖。
--no-plugins: 禁用 plugins。
--no-scripts: 禁止在根资源包中定义的脚本执行。
--no-progress: 移除进度信息,这可以避免一些不处理换行的终端或脚本出现混乱的显示。
--keep-vcs: 创建时跳过缺失的 VCS 。如果你在非交互模式下运行创建命令,这将是非常有用的。
打印自动加载索引 dump-autoload
某些情况下你需要更新 autoloader,例如在你的包中加入了一个新的类。你可以使用 dump-autoload 来完成,而不必执行 install 或 update 命令。
此外,它可以打印一个优化过的,符合 PSR-0/4 规范的类的索引,这也是出于对性能的可考虑。在大型的应用中会有许多类文件,而 autoloader 会占用每个请求的很大一部分时间,使用 classmaps 或许在开发时不太方便,但它在保证性能的前提下,仍然可以获得 PSR-0/4 规范带来的便利。
打印自动加载索引-参数
--optimize (-o): 转换 PSR-0/4 autoloading 到 classmap 获得更快的载入速度。这特别适用于生产环境,但可能需要一些时间来运行,因此它目前不是默认设置。
--no-dev: 禁用 autoload-dev 规则。
查看许可协议 licenses
列出已安装的每个包的名称、版本、许可协议。可以使用 --format=json 参数来获取 JSON 格式的输出。
执行脚本 run-script
你可以运行此命令来手动执行 ,只需要指定脚本的名称,可选的 --no-dev 参数允许你禁用开发者模式。
诊断 diagnose
如果你觉得发现了一个 bug 或是程序行为变得怪异,你可能需要运行 diagnose 命令,来帮助你检测一些常见的问题。
php composer.phar diagnose
归档 archive
此命令用来对指定包的指定版本进行 zip/tar 归档。它也可以用来归档你的整个项目,不包括 excluded/ignored(排除/忽略)的文件。
php composer.phar archive vendor/package 2.0.21 --format=zip
--format (-f): 指定归档格式:tar 或 zip(默认为 tar)。
--dir: 指定归档存放的目录(默认为当前目录)。
获取帮助信息 help
使用 help 可以获取指定命令的帮助信息。
php composer.phar help install
你可以设置一些环境变量来覆盖默认的配置。建议尽可能的在 composer.json 的 config 字段中设置这些值,而不是通过命令行设置环境变量。值得注意的是环境变量中的值,将始终优先于 composer.json 中所指定的值。
环境变量 COMPOSER 可以为 composer.json 文件指定其它的文件名。
COMPOSER=composer-other.json php composer.phar install
COMPOSER_ROOT_VERSION
通过设置这个环境变量,你可以指定 root 包的版本,如果程序不能从 VCS 上猜测出版本号,并且未在 composer.json 文件中申明。
COMPOSER_VENDOR_DIR
通过设置这个环境变量,你可以指定 composer 将依赖安装在 vendor 以外的其它目录中。
COMPOSER_BIN_DIR
通过设置这个环境变量,你可以指定 bin()目录到 vendor/bin 以外的其它目录。
http_proxy or HTTP_PROXY
如果你是通过 HTTP 代理来使用 Composer,你可以使用 http_proxy 或 HTTP_PROXY 环境变量。只要简单的将它设置为代理服务器的 URL。许多操作系统已经为你的服务设置了此变量。
建议使用 http_proxy(小写)或者两者都进行定义。因为某些工具,像 git 或 curl 将使用 http_proxy 小写的版本。另外,你还可以使用 git config --global http.proxy &proxy url& 来单独设置 git 的代理。
如果你是使用代理服务器,并且想要对某些域名禁用代理,就可以使用 no_proxy 环境变量。只需要输入一个逗号相隔的域名 排除 列表。
此环境变量接受域名、IP 以及 CIDR地址块。你可以将它限制到一个端口(例如::80)。你还可以把它设置为 * 来忽略所有的 HTTP 代理请求。
HTTP_PROXY_REQUEST_FULLURI
如果你使用了 HTTP 代理,但它不支持 request_fulluri 标签,那么你应该设置这个环境变量为 false 或 0 ,来防止 composer 从 request_fulluri 读取配置。
HTTPS_PROXY_REQUEST_FULLURI
如果你使用了 HTTPS 代理,但它不支持 request_fulluri 标签,那么你应该设置这个环境变量为 false 或 0 ,来防止 composer 从 request_fulluri 读取配置。
COMPOSER_HOME
COMPOSER_HOME 环境变量允许你改变 Composer 的主目录。这是一个隐藏的、所有项目共享的全局目录(对本机的所有用户都可用)。
它在各个系统上的默认值分别为:
*nix /home/&user&/.composer。
OSX /Users/&user&/.composer。
Windows C:\Users\&user&\AppData\Roaming\Composer。
COMPOSER_HOME/config.json
你可以在 COMPOSER_HOME 目录中放置一个 config.json 文件。在你执行 install 和 update 命令时,Composer 会将它与你项目中的 composer.json 文件进行合并。
该文件允许你为用户的项目设置
若 全局 和 项目 存在相同配置项,那么项目中的 composer.json 文件拥有更高的优先级。
COMPOSER_CACHE_DIR
COMPOSER_CACHE_DIR 环境变量允许你设置 Composer 的缓存目录,这也可以通过
进行配置。
它在各个系统上的默认值分别为:
*nix and OSX $COMPOSER_HOME/cache。
Windows C:\Users\&user&\AppData\Local\Composer 或 %LOCALAPPDATA%/Composer。
COMPOSER_PROCESS_TIMEOUT
这个环境变量控制着 Composer 执行命令的等待时间(例如:git 命令)。默认值为300秒(5分钟)。
COMPOSER_DISCARD_CHANGES
这个环境变量控制着 discard-changes 。
COMPOSER_NO_INTERACTION
如果设置为1,这个环境变量将使 Composer 在执行每一个命令时都放弃交互,相当于对所有命令都使用了 --no-interaction。可以在搭建 虚拟机/持续集成服务器 时这样设置。
如果您发现文档中有错误,或者能够帮我们完善文档,请提交到我们的 !
Composer 以及本网站上的所有内容全部遵循 。

我要回帖

更多关于 symfony update 的文章

 

随机推荐