[TOC]
# 要求
Phalcon需要运行PHP。其松耦合设计允许开发人员安装Phalcon并使用其功能而无需额外扩展。某些组件与其他扩展有依赖关系。例如,使用数据库连接将需要`php_pdo` 扩展。如果您的RDBMS是MySql / MariaDb或Aurora数据库,您还需要 `php_mysqlnd` 扩展。同样,使用带有Phalcon的PostgreSql数据库需要 `php_pgsql` 扩展。
## 硬件
Phalcon旨在尽可能少地使用资源,同时提供高性能。虽然我们已经在各种低端环境中测试了Phalcon(例如0.25GB RAM,0.5 CPU),但您选择的硬件将取决于您的应用需求。
我们的网站和博客(以及其他网站)托管在具有512MB RAM和1核CPU的Amazon VM上。
## 软件
* PHP >= 5.5
>[danger] 您应该始终尝试使用最新版本的Phalcon和PHP同时解决bug,安全性增强和性能。PHP 5.5将在不久的将来被弃用,而Phalcon 4将仅支持PHP 7。
Phalcon需要以下扩展才能运行(最低):
* `curl`
* `gettext`
* `gd2` (to use the `Phalcon\Image\Adapter\Gd` class)
* `libpcre3-dev` (Debian/Ubuntu), `pcre-devel` (CentOS), `pcre` (macOS)
* `json`
* `mbstring`
* `pdo_*`
* `fileinfo`
* `openssl`
### 可选,具体取决于您的应用程序的需求
* [PDO](http://php.net/manual/en/book.pdo.php) 扩展以及相关的RDBMS特定扩展(即[MySQL](http://php.net/manual/en/ref.pdo-mysql.php), [PostgreSql](http://php.net/manual/en/ref.pdo-pgsql.php) 等)
* [OpenSSL](http://php.net/manual/en/book.openssl.php) 扩展
* [Mbstring](http://php.net/manual/en/book.mbstring.php) 扩展
* [Memcache](http://php.net/manual/en/book.memcache.php), [Memcached](http://php.net/manual/en/book.memcached.php) 或其他相关的缓存适配器,具体取决于您对缓存的使用情况
# 安装
由于Phalcon被编译为PHP扩展,因此其安装与任何其他传统PHP框架有些不同。Phalcon需要作为模块安装和加载到Web服务器上。
## Linux
要在Linux上安装Phalcon,您需要在您的发行版中添加我们的存储库,然后进行安装。
### 基于DEB的发行版(Debian,Ubuntu等)
#### 存储库安装
将存储库添加到您的分发中:
##### 稳定版
```bash
curl -s https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh | sudo bash
```
或
##### 尝鲜版
```bash
curl -s https://packagecloud.io/install/repositories/phalcon/nightly/script.deb.sh | sudo bash
```
>[warning] 这只需要执行一次,除非您的发行版更改或您想要从稳定版本切换到尝鲜版本。
#### Phalcon安装
要安装Phalcon,您需要在终端中发出以下命令:
##### PHP 5.x
```bash
sudo apt-get update
sudo apt-get install php5-phalcon
```
##### PHP 7
```bash
sudo apt-get update
sudo apt-get install php7.0-phalcon
```
#### 其他源
#### Ondřej Surý
如果您不想在[packagecloud.io](https://packagecloud.io/phalcon)上使用我们的存储库,您可以随时使用[Ondřej Surý](https://launchpad.net/~ondrej/+archive/ubuntu/php/)提供的存储库。
回购存储库:
```php
sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
```
还有Phalcon:
```php
sudo apt-get install php-phalcon
```
### 基于RPM的发行版(CentOS,Fedora等)
#### 存储库安装
将存储库添加到您的分发中:
##### 稳定版
```bash
curl -s https://packagecloud.io/install/repositories/phalcon/stable/script.rpm.sh | sudo bash
```
or
<a name='installation-linux-rpm-repository-nightly'></a>
##### 尝鲜版
```bash
curl -s https://packagecloud.io/install/repositories/phalcon/nightly/script.rpm.sh | sudo bash
```
>[warning] 这只需要执行一次,除非您的发行版更改或您想要从稳定版本切换到尝鲜版本。
#### Phalcon安装
要安装Phalcon,您需要在终端中发出以下命令:
##### PHP 5.x
```bash
sudo yum update
sudo yum install php56u-phalcon
```
##### PHP 7
```bash
sudo yum update
sudo yum install php70u-phalcon
```
#### 其他源
##### Remi
[Remi Collet](https://github.com/remicollet) Remi Collet为基于RPM的安装维护着一个出色的存储库。您可以在[此处](https://blog.remirepo.net/pages/Config-en)找到有关如何为其分发启用它的说明。
之后安装Phalcon就像以下一样简单:
```bash
yum install php56-php-phalcon3
```
其他版本可用于特定于体系结构(x8/x64)以及特定于PHP(5.5,5.6,7.x)
## FreeBSD
一个端口可用于FreeBSD。要安装它,您需要发出以下命令:
### `pkg_add`
```bash
pkg_add -r phalcon
```
### Source
```bash
export CFLAGS="-O2 --fvisibility=hidden"
cd /usr/ports/www/phalcon
make install clean
```
## Gentoo
Gentoo的可以在 [https://github.com/smoke/phalcon-gentoo-overlay](https://github.com/smoke/phalcon-gentoo-overlay) 找到安装Phalcon
## macOS
在macOS系统上,您可以使用`brew`,`macports`或源代码编译和安装扩展:
### 要求
* PHP 5.5.x/5.6.x/7.0.x/7.1.x
* XCode
### Brew
由于[homebrew/php](https://brew.sh/2018/01/19/homebrew-1.5.0/) tap 已被弃用并且正在被删除,因此已经创建了Phalcon的自定义存储库。
PHP 5.5尚未移植到`homebrew/core`,因此不再存在。另一方面,PHP 7.2已被添加。
```bash
brew tap tigerstrikemedia/homebrew-phalconphp
brew install php56-phalcon
brew install php70-phalcon
brew install php71-phalcon
brew install php72-phalcon
```
### MacPorts
```bash
sudo port install php55-phalcon
sudo port install php56-phalcon
```
编辑你的php.ini文件,然后在最后追加:
```ini
extension=php_phalcon.so
```
重启您的web服务器。
## Windows
要在Windows上使用Phalcon,您需要安装phalcon.dll。我们根据目标平台编译了几个DLL。DLL可以在我们的[下载](https://phalconphp.com/en/download/windows)页面中找到。
确定您的PHP安装和架构。如果您下载错误的DLL,Phalcon将无法正常工作。`phpinfo()`包含此信息。在下面的示例中,我们将需要DLL的NTS版本:
![phpinfo](https://d33wubrfki0l68.cloudfront.net/0f6f421dedc1bae3eef3790128d8ac4801ecc561/f6136/assets/images/content/phpinfo-api.png)
可用的DLL是:
| 架构 | 版本 | 类型 |
|:------------:|:-------:| --------------------- |
| x64 | 7.x | Thread safe |
| x64 | 7.x | Non Thread safe (NTS) |
| x86 | 7.x | Thread safe |
| x86 | 7.x | Non Thread safe (NTS) |
| x64 | 5.6 | Thread safe |
| x64 | 5.6 | Non Thread safe (NTS) |
| x86 | 5.6 | Thread safe |
| x86 | 5.6 | Non Thread safe (NTS) |
| x64 | 5.5 | Thread safe |
| x64 | 5.5 | Non Thread safe (NTS) |
| x86 | 5.5 | Thread safe |
| x86 | 5.5 | Non Thread safe (NTS) |
编辑你的php.ini文件,然后在最后追加:
```ini
extension=php_phalcon.dll
```
重启您的web服务器。
<a name='installation-sources'></a>
## 源码编译
从源代码编译类似于大多数环境(Linux/macOS)。
### 要求
* PHP 5.5.x/5.6.x/7.0.x/7.1.x
* GCC 编译 (Linux/Solaris/FreeBSD) 或 Xcode (macOS)
* re2c >= 0.13
* libpcre-dev
您可以使用相关的包管理器在系统中安装这些包。流行的Linux发行版的说明如下:
#### Ubuntu
```bash
sudo apt-get install php5-dev libpcre3-dev gcc make
```
#### Suse
```bash
sudo zypper install php5-devel gcc make
```
#### CentOS/Fedora/RHEL
```bash
sudo yum install php-devel pcre-devel gcc make
```
### 编译Phalcon
我们首先需要从Github存储库中克隆Phalcon
```bash
git clone https://github.com/phalcon/cphalcon
```
现在构建扩展
```bash
cd cphalcon/build
sudo ./install
```
您现在需要将`extension=phalcon.so`添加到PHP ini并重新启动Web服务器,以便加载扩展。
```ini
# Suse: Add a file called phalcon.ini in /etc/php5/conf.d/ with this content:
extension=phalcon.so
# CentOS/RedHat/Fedora: Add a file called phalcon.ini in /etc/php.d/ with this content:
extension=phalcon.so
# Ubuntu/Debian with apache2: Add a file called 30-phalcon.ini in /etc/php5/apache2/conf.d/ with this content:
extension=phalcon.so
# Ubuntu/Debian with php5-fpm: Add a file called 30-phalcon.ini in /etc/php5/fpm/conf.d/ with this content:
extension=phalcon.so
# Ubuntu/Debian with php5-cli: Add a file called 30-phalcon.ini in /etc/php5/cli/conf.d/ with this content:
extension=phalcon.so
```
## 高级编译
Phalcon会自动检测您的架构,但是,您可以强制编译特定的架构:
```bash
cd cphalcon/build
# One of the following:
sudo ./install --arch 32bits
sudo ./install --arch 64bits
sudo ./install --arch safe
```
如果自动安装程序失败,您可以手动构建扩展:
```bash
git clone https://github.com/phalcon/cphalcon
# cd cphalcon/build/php5/32bits
cd cphalcon/build/php5/64bits
# NOTE: for PHP 7 you have to use
# cd cphalcon/build/php7/32bits
# or
# cd cphalcon/build/php7/64bits
make clean
phpize --clean
export CFLAGS="-O2 --fvisibility=hidden"
./configure --enable-phalcon
make
make install
```
如果你有特定的PHP版本运行:
```bash
git clone https://github.com/phalcon/cphalcon
# cd cphalcon/build/php5/32bits
cd cphalcon/build/php5/64bits
# NOTE: for PHP 7 you have to use
# cd cphalcon/build/php7/32bits
# or
# cd cphalcon/build/php7/64bits
make clean
/opt/php-5.6.15/bin/phpize --clean
export CFLAGS="-O2 --fvisibility=hidden"
./configure --with-php-config=/opt/php-5.6.15/bin/php-config --enable-phalcon
make
make install
```
您现在需要将`extension=phalcon.so`添加到PHP ini并重新启动Web服务器,以便加载扩展。
您可以在Web服务器根目录中创建一个包含以下内容的小脚本:
```php
<?php
phpinfo();
```
并将其加载到您的Web浏览器上。Phalcon应该有一个部分。如果没有,请确保您的扩展已正确编译,您已对 `php.ini` 进行了必要的更改,并且您已重新启动Web服务器。
您还可以从命令行检查安装:
```bash
php -r 'print_r(get_loaded_extensions());'
```
这将输出类似于此的内容:
```php
Array
(
[0] => Core
[1] => libxml
[2] => filter
[3] => SPL
[4] => standard
[5] => phalcon
[6] => pdo_mysql
)
```
您还可以使用CLI查看安装的模块:
```bash
php -m
```
>[danger] 请注意,在某些基于Linux的系统中,您可能需要更改两个`php.ini`文件,一个用于Web服务器(Apache/Nginx),另一个用于CLI。如果仅为Web服务器加载Phalcon,则需要找到CLI`php.ini`并为要加载的模块添加必要的附加内容。
- 常规
- Welcome
- 贡献
- 生成回溯
- 测试重现
- 单元测试
- 入门
- 安装
- Web服务器设置
- WAMP
- XAMPP
- 教程
- 基础教程
- 教程:创建一个简单的REST API
- 教程:Vökuró
- 提升性能
- 教程:INVO
- 开发环境
- Phalcon Compose (Docker)
- Nanobox
- Phalcon Box (Vagrant)
- 开发工具
- Phalcon开发者工具的安装
- Phalcon开发者工具的使用
- 调试应用程序
- 核心
- MVC应用
- 微应用
- 创建命令行(CLI)应用程序
- 依赖注入与服务定位
- MVC架构
- 服务
- 使用缓存提高性能
- 读取配置
- 上下文转义
- 类加载器
- 使用命名空间
- 日志
- 队列
- 数据库
- 数据库抽象层
- Phalcon查询语言(PHQL)
- ODM(对象文档映射器)
- 使用模型
- 模型行为
- ORM缓存
- 模型事件
- 模型元数据
- 模型关系
- 模型事务
- 验证模型
- 数据库迁移
- 分页
- 前端
- Assets管理
- 闪存消息
- 表单
- 图像
- 视图助手(标签)
- 使用视图
- Volt:模板引擎
- 业务逻辑
- 访问控制列表(ACL)
- 注解解析器
- 控制器
- 调度控制器
- 事件管理器
- 过滤与清理
- 路由
- 在session中存储数据
- 生成URL和路径
- 验证
- HTTP
- Cookies管理
- 请求环境
- 返回响应
- 安全
- 加密/解密
- 安全
- 国际化
- 国际化
- 多语言支持