以下章节摘自http://www.inosin.cn/symfony_doc/,版权声明附。 有问题可于http://www.inosin.cn/blog/archives/00067.html留言! Inosin译 ======安装 symfony====== **概况** 这一章描述了安装symfony框架的步骤,包括从'sandbox(沙盒)'解压缩,PEAR的包安装,以及从源文件手动安装。 =====介绍===== symfony框架是由一系列PHP写成的文件组成的。依靠symfony的项目需要这些文件,所以安装symfony意味着取得这些文件并使得你的项目能够使用这些文件。 Symfony能被应用于一个或多个项目。如果你开发一个单一的项目,你可以把symfony的框架嵌入你所要开发的应用系统之中去。另一方面如果你选择用symfony来开发多个的项目,你更应该把所有的symfony文件存放在一起,这样可以更容易升级。 另外,当开发一个应用的时候你很可能需要安装两次symfony:一次是部署你的开发环境,另一次为你的服务器主机(除非你的机器已经安装过了)。 所有这些不同的需求有着不同的解决方法,这也是为什么安装symfony有这几个选择: ***sandbox(沙盒)**是一个空的symfony项目,所有相关的库类都已包含在其中,并且基本的配置也已经完成。这主要是为symfony的初学者定制的,这些人通常希望在什么都没有安装的情况下尝试使用框架或解决问题。 ***PEAR 安装**推荐那些需要运行数个基于symfony的项目使用,这样易于升级。它需要PEAR1.4.0 或更高的版本,这通常绑定在PHP的发行版中。 ***手动安装** 意味着只适用于高级的PHP开发人员,他们通常需要从最新的补丁中受益或者是加入自己需要的特性。 #note[**注意**:symfony框架发展的很快,一个新的稳定版本也许在你第一次安装完之后几天就产生了。你需要考虑到升级这个主要问题,这也是第一种安装方法不被推荐的原因(如果你要开发一个实际应用的网站)。事实上,用sandbox开发的应用要升级可不是很容易。]# =====先决条件===== 为了使用symfony,你需要在web服务器上安装好PHP5。如果你想使用[[http://pear.php.net/|PEAR]]方式安装,你还需要[[http://pear.php.net/|PEAR]]。如果你打算使用稳定的数据,你还需要一个数据库。Symfony可以兼容 MYSQL,PostgreSQL,Oracle,MSSQL,以及其它带有[[http://creole.phpdb.org/wiki/|Creole]]驱动的数据库。 #note[**注意**: 你可以找到许多提供下载的[[http://en.wikipedia.org/wiki/LAMP_(software_bundle)|LAMP]]包,其中包括 Apache server,MySQL 数据库和PHP绑定在一起配置成一个现成的平台([[http://www.apachefriends.org/en/xampp.html|XAMPP]]用于一些平台,[[http://www.mamp.info/en/home/|MAMP]]用于Macintosh,[[http://en.wikipedia.org/wiki/WAMP|WAMP]]用于Windows,等等.)。如果你还没有安装PHP5,它们也许将是你开始的最好选择。]# 标准的PHP5的发行包通常可以很好的与symfony共同运行。但是,由于安装设备的不同以及许多开发员自己编译PHP,web服务器有时会发出缺少个别PHP构件的错误警告。如果你无法让symfony正常工作,搜索一下[[http://www.symfony-project.com/forum/index.php/f/6/|安装论坛]],那里有一些解决了的个案,其中一些也许也能同样能解决你的问题。 #note[注意:有些包中同时包含了PHP4和PHP5。Symfony只能运行在PHP5下。检查你使用的PHP版本的方法如下,在命令行输入:
$ php -v
]# =====沙盒方式安装(The sandbox)===== 沙盒(sandbox)是一个压缩文件。它包括一个空的symfony项目,其中已经包含了所有需要的库类(symfony, pake, creole, propel and phing)。安装时,只需解压缩到你的服务器站点的根目录下(通常是 web/ 目录)。它将在盒中进行工作,无须任何配置和额外的包。 沙盒(sandbox)是为了在本地电脑上练习symfony用的,而并不是真正的最终开发一个复杂的应用。但是在沙盒(sandbox)中附带的symfony版本具有全部的功能,这一点是和通过PEAR安装是等同的。需要注意的是沙盒(sandbox)版本不容易升级。 在这里取得沙盒(sandbox): http://www.symfony-project.com/get/sf_sandbox.tgz。在解压缩文档只有,用下列的请求路径测试沙盒(sandbox) : http://localhost/sf_sandbox/web/ 你将看到一个贺词页面。 如果你在 sf_sandbox/ 目录下,你可以使用命令行去进行通常的站点管理操作。例如:清除缓存,输入:
$ ./symfony.sh clear-cache                      (*nix)
symfony clear-cache                             (Windows)
查看所有的symfony命令行下可用的命令,输入:
$ ./symfony.sh -T                               (*nix)
symfony -T
查阅目录中的README文件获得更多详细信息. 在下载完沙盒(sandbox)之后,你可以按照[[*:我的第一个Symfony项目]]的指引来了解symfony开发的基本功能了。 =====通过PEAR包来安装symfony===== ====PEAR 设置==== [[http://pear.php.net/|PEAR]]被PHP用于从一个中枢仓库来安装库类。symfony项目有它自己的仓库或频道。注意这个频道只针对 PEAR 1.4.0或以上版本才有效,因此你需要从旧版本中升级:
$ pear upgrade PEAR
首先要添加 'symfony' 频道:
$ pear channel-discover pear.symfony-project.com
在这个频道找到可用的库:
$ pear remote-list -c symfony
====Symfony 的安装==== 现在你将准备安装最新稳定版本symfony以及它相关的包:
$ pear install symfony/symfony
这样 symfony 就已经被安装了。你现在就可以用命令行工具 symfony 创建一个新项目,然后使用库中的类和方法。 Symfony在运行的时候需要一些其他的包;一些已经在安装时候包含了,还有一些需要你自己去安装它们: *[[http://www.pake-project.org/|pake]]: 自动被安装。你将在[[project_creation|下一章节]]了解更多关于 Pake 的用处。 *[[http://creole.tigris.org/|creole]]: 自动被安装(用于数据库访问) *[[http://propel.phpdb.org/trac/|propel]]: 自动被安装(用于对象关系映射)(used for object/relational mapping) *[[http://phing.info/wiki/index.php|phing]]: 需要手动安装
$ pear install http://phing.info/pear/phing-current.tgz
可以到所有你能够执行命令行工具的目录下看一下可执行的命令,输入:
$ symfony -T
====symfony 有哪些文件呢?==== symfony 现在被安装在: $php_dir/symfony/ 主库(main libraries) $data_dir/symfony/ symfony应用的构架,默认的模块和配置(skeleton of symfony applications, default modules and configuration) $doc_dir/symfony/ 文档(documentation) $test_dir/symfony/ 单元测试(unit tests) _dir 变量是 PEAR 配置的一部分。要查看它们的值,输入:
$ pear config-show
事实上文件的确切位置并不是十分重要的,因为安装提供了新的、可执行的 symfony,并将为你完成所有工作(创建项目,安装和初始化应用,等等.)。只有 $doc_dir 目录需要在你的web服务器上配置,那里包含一些默认的文件(样式表和图片)在 symfony 项目中可能被用到。这个配置将会在下一章节详细介绍。 仅仅作为提醒,Unix和Windows系统中的默认的位置如下: ^Unix ^Windows^-^ |usr/local/lib/php/symfony/ | c:/Program Files/php/pear/symfony/ | 主程序,主库(main executable, main libraries) |usr/local/lib/php/data/symfony/ | c:/Program Files/php/pear/data/symfony/ | symfony应用的构架(skeleton of symfony applications) |usr/local/lib/php/doc/symfony/ | c:/Program Files/php/pear/doc/symfony/ | 文档(documentation) |usr/local/lib/php/test/symfony/ | c:/Program Files/php/pear/test/symfony/ | 单元测试(unit tests) =====获得最新测试版(nightly builds)===== 如上提供的过程将安装最新最稳定的版本,为了在两个稳定版本之间掌握最新的bug修正情况,你也许想安装最新的测试版本(nightly build),它在 symfont 频道发布时加入了'beta'标记,你可以像这样安装它:
$ pear install symfony/symfony-beta
如果你已经安装了一个测试版本,可以这样取得最后的测试版本:
$ pear upgrade symfony/symfony-beta
#note[**注意**:在一些Windows平台下,有时会出现PEAR工具用它自己的缓存而不实际请求symfony频道去检查最新的版本。在你升级之前请确认清空PEAR缓存(使用 pear config-show 命令得到缓存文件夹的位置)。]# 当你升级你安装的symfony程序之前,先不要忘记清除所有应用产生的缓存:
$ cd myproject
$ symfony clear-cache
如果你想用其他的方式清除缓存(保留一些已经存在的HTML缓存,只清除每个应用的配置文件),你可以使用更好的办法:
$ cd myproject
$ symfony clear-cache myapp1 config
$ symfony clear-cache myapp2 config
你可以检查所安装的symfony的版本号,只需输入:
$ symfony -V
=====手动安装symfony===== 如果你不想使用PEAR方式安装,你还可以直接在 SVN 仓库下载到最新版本,通过请求一个校验(checkout),手动的安装它:
$ mkdir /home/steve/mysymfony
$ cd /home/steve/mysymfony
$ svn co http://svn.symfony-project.com/trunk/ .
当用这种方式创建项目时,你必须在项目中创建两个符号链接,从 lib 目录到symfony的 lib 目录:
$ cd /home/steve/myproject
$ ln -sf /home/steve/mysymfony/lib lib/symfony
$ ln -sf /home/steve/mysymfony/data data/symfony
另外,你必须创建允许访问命令行工具 pake 和 symfony 的快捷方式。 #note[**注意**:你必须安装 Phing 和 Pake。将它们安装在 lib/symfony 目录中。]# =====不带命令行的安装symfony===== 如果你的站点放置的服务器不允许你访问命令行(可能发生在你的主机提供商只允许FTP访问时),你需要在你的项目树结构中手动的安装两个symfony目录。 首先,从symfony项目站点取得symfony框架包的.tgz文件。将它解压缩在一个临时文件夹中。你将会看到下列文件树结构: package.xml symfony/ LICENSE bin/ data/ lib/ bin 目录不再需要,因为你不能调用一个命令。 让我们假设在远程服务器上已经有一个激活的symfony项目。远程树结构看上去像这样: myproject/ apps/ myapp/ batch/ cache/ config/ data/ doc/ lib/ log/ test/ web/ 需要学习更多关于symfony项目的文件树结构,请阅读[[http://www.inosin.cn/symfony_doc/file_structure.html|相关章节]]。 现在你需要从symfony包中复制一些文件到你的项目目录下。首先,在远程项目的 data目录 和 lib 目录中创建一个 symfony 子目录。其次,照下面这样上传文件: ^- local^ - distant^ |copy symfony/data/* |to myproject/data/symfony/ | |copy symfony/lib/* |to myproject/lib/symfony/ | 如果你还不确定所期待的结果是什么,你可以[[http://www.symfony-project.com/get/sf_sandbox.tgz|下载沙盒(the sandbox)]]去了解一个项目的框架内部看上去是什么样的。另外,[[http://www.symfony-project.com/trac/browser/trunk/bin/create_quickstart|沙盒(sandox)创建脚本]]详细描述了创建一个能够运行的项目的所有需要的操作过程。 #note[提示:一些主机不能够运行扩展名不是 .php5 的脚本。如果你的远程主机是这样的,你需要重新将 myproject/web/ 下的 index.php 命名为 index.php5 。不必担心重新命名其他文件:在symfony中利用前端控制器,只需要声明 index.php 这一个PHP5脚本文件就可以了。(了解更多的控制器特性在[[http://www.inosin.cn/symfony_doc/controller.html|控制器]]章节)]# =====用户贡献的指南===== [[http://www.symfony-project.com/trac/wiki|symfony wiki]]里有一些文章介绍了在不同平台环境下安装的步骤。 [[http://www.symfony-project.com/forum/index.php/f/6/|这个讨论区]]是一个专门用于解决安装问题的讨论区,很多问题已经得到了解决,如果你有新的问题时在这里会得到其他用户的帮助。