鍍金池/ 教程/ PHP/ 安裝 Yii
查詢構(gòu)建器
HTTP 緩存
單元測試
資源
數(shù)據(jù)庫遷移
Fixtures
收集列表輸入
認(rèn)證
助手類
緩存
數(shù)據(jù)緩存
最佳安全實(shí)踐
響應(yīng)格式
使用 Gii 生成代碼
服務(wù)定位器
性能優(yōu)化
資源
多模型的復(fù)合表單
控制器
Html 幫助類
運(yùn)行機(jī)制概述
快速入門
屬性(Property)
使用表單
配置測試環(huán)境
數(shù)據(jù)提供者
使用數(shù)據(jù)庫
授權(quán)
輸入驗(yàn)證
類自動(dòng)加載(Autoloading)
版本
響應(yīng)
Sessions 和 Cookies
數(shù)組助手類
創(chuàng)建你自己的應(yīng)用程序結(jié)構(gòu)
文件上傳
路由
收發(fā)郵件
模型
小部件
更上一層樓
頁面緩存
請求
片段緩存
排序
處理密碼
數(shù)據(jù)小部件
模塊
事件
控制器
從 Yii 1.1 升級
應(yīng)用組件
驗(yàn)收測試
入口腳本
總覽
Url 幫助類
行為
速率限制
控制臺(tái)命令
依賴注入容器
視圖
功能測試
錯(cuò)誤處理
過濾器
主題
應(yīng)用主體
引入第三方代碼
共享托管環(huán)境
測試
擴(kuò)展
路由
使用模板引擎
核心驗(yàn)證器(Core Validators)
分頁
數(shù)據(jù)庫訪問 (DAO)
配置
創(chuàng)建表單
日志
安裝 Yii
客戶端腳本使用
組件(Component)
說聲 Hello
運(yùn)行應(yīng)用
數(shù)據(jù)格式器
認(rèn)證
錯(cuò)誤處理
別名(Aliases)
Active Record
啟動(dòng)引導(dǎo)(Bootstrapping)
國際化

安裝 Yii

你可以通過兩種方式安裝 Yii:使用 Composer 或下載一個(gè)歸檔文件。推薦使用前者,這樣只需執(zhí)行一條簡單的命令就可以安裝新的擴(kuò)展或更新 Yii 了。

注意:和 Yii 1 不同,以標(biāo)準(zhǔn)方式安裝 Yii 2 時(shí)會(huì)同時(shí)下載并安裝框架本身和一個(gè)應(yīng)用程序的基本骨架。

通過 Composer 安裝

如果還沒有安裝 Composer,你可以按 getcomposer.org 中的方法安裝。在 Linux 和 Mac OS X 中可以運(yùn)行如下命令:

curl -s http://getcomposer.org/installer | php
curl -sS https://getcomposer.org/installer | php

mv composer.phar /usr/local/bin/composer

在 Windows 中,你需要下載并運(yùn)行 Composer-Setup.exe。

如果遇到任何問題或者想更深入地學(xué)習(xí) Composer,請參考 Composer 文檔(英文),Composer 中文。

如果你已經(jīng)安裝有 Composer 請確保使用的是最新版本,你可以用 composer self-update 命令更新 Composer 為最新版本。

Composer 安裝后,切換到一個(gè)可通過 Web 訪問的目錄,執(zhí)行如下命令即可安裝 Yii :

composer global require "fxp/composer-asset-plugin:1.0.0"

composer global require "fxp/composer-asset-plugin:~1.0.0"

composer create-project --prefer-dist yiisoft/yii2-app-basic basic

第一條命令安裝 Composer asset plugin,它是通過 Composer 管理 bower 和 npm 包所必須的,此命令全局生效,一勞永逸。第二條命令會(huì)將 Yii 安裝在名為 basic 的目錄中,你也可以隨便選擇其他名稱。

注意:在安裝過程中 Composer 可能會(huì)詢問你 GitHub 賬戶的登錄信息,因?yàn)榭赡茉谑褂弥谐^了 GitHub API (對匿名用戶的)使用限制。因?yàn)?Composer 需要為所有擴(kuò)展包從 GitHub 中獲取大量信息,所以超限非常正常。(譯注:也意味著作為程序猿沒有 GitHub 賬號,就真不能愉快地玩耍了)登陸 GitHub 之后可以得到更高的 API 限額,這樣 Composer 才能正常運(yùn)行。更多細(xì)節(jié)請參考 Composer 文檔(該段 Composer 中文文檔期待您的參與)。

技巧:如果你想安裝 Yii 的最新開發(fā)版本,可以使用以下命令代替,它添加了一個(gè) stability 選項(xiàng)中文版):

composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic

注意,Yii 的開發(fā)版(dev 版)不應(yīng)該用于生產(chǎn)環(huán)境中,它可能會(huì)破壞運(yùn)行中的代碼。

通過歸檔文件安裝

通過歸檔文件安裝 Yii 包括三個(gè)步驟:

  1. yiiframework.com 下載歸檔文件。
  2. 將下載的文件解壓縮到 Web 目錄中。
  3. 修改 config/web.php 文件,給 cookieValidationKey 配置項(xiàng)添加一個(gè)密鑰(若你通過 Composer 安裝,則此步驟會(huì)自動(dòng)完成):

     // !!! 在下面插入一段密鑰(若為空) - 以供 cookie validation 的需要
     'cookieValidationKey' => '在此處輸入你的密鑰',

其他安裝方式

上文介紹了兩種安裝 Yii 的方法,安裝的同時(shí)也會(huì)創(chuàng)建一個(gè)立即可用的 Web 應(yīng)用程序。對于小的項(xiàng)目或用于學(xué)習(xí)上手,這都是一個(gè)不錯(cuò)的起點(diǎn)。

但是其他的安裝方式也存在:

  • 如果你只想安裝核心框架,然后從零開始構(gòu)建整個(gè)屬于你自己的應(yīng)用程序模版,可以參考從頭構(gòu)建自定義模版一節(jié)的介紹。
  • 如果你要開發(fā)一個(gè)更復(fù)雜的應(yīng)用,可以更好地適用于團(tuán)隊(duì)開發(fā)環(huán)境的,可以考慮安裝高級應(yīng)用模版。

驗(yàn)證安裝的結(jié)果

安裝完成后,就可以使用瀏覽器通過如下 URL 訪問剛安裝完的 Yii 應(yīng)用了:

http://localhost/basic/web/index.php

這個(gè) URL 假設(shè)你將 Yii 安裝到了一個(gè)位于 Web 文檔根目錄下的 basic 目錄中,且該 Web 服務(wù)器正運(yùn)行在你自己的電腦上(localhost)。你可能需要將其調(diào)整為適應(yīng)自己的安裝環(huán)境。

http://wiki.jikexueyuan.com/project/yii-2.0-guide/images/start-app-installed.png" alt="Yii 安裝成功" />

你應(yīng)該可以在瀏覽器中看到如上所示的 “Congratulations!” 頁面。如果沒有,請通過以下任意一種方式,檢查當(dāng)前 PHP 環(huán)境是否滿足 Yii 最基本需求:

  • 通過瀏覽器訪問 URL http://localhost/basic/requirements.php
  • 執(zhí)行如下命令:

    cd basic
    php requirements.php

你需要配置好 PHP 安裝環(huán)境,使其符合 Yii 的最小需求。主要是需要 PHP 5.4 以上版本。如果應(yīng)用需要用到數(shù)據(jù)庫,那還要安裝 PDO PHP 擴(kuò)展 和相應(yīng)的數(shù)據(jù)庫驅(qū)動(dòng)(例如訪問 MySQL 數(shù)據(jù)庫所需的 pdo_mysql)。

配置 Web 服務(wù)器

補(bǔ)充:如果你現(xiàn)在只是要試用 Yii 而不是將其部署到生產(chǎn)環(huán)境中,本小節(jié)可以跳過。

通過上述方法安裝的應(yīng)用程序在 Windows,Max OS X,Linux 中的 Apache HTTP 服務(wù)器Nginx HTTP 服務(wù)器且 PHP 版本為 5.4 或更高都可以直接運(yùn)行。Yii 2.0 也兼容 Facebook 公司的 HHVM,由于 HHVM 和標(biāo)準(zhǔn) PHP 在邊界案例上有些地方略有不同,在使用 HHVM 時(shí)需稍作處理。

在生產(chǎn)環(huán)境的服務(wù)器上,你可能會(huì)想配置服務(wù)器讓應(yīng)用程序可以通過 URL http://www.example.com/index.php 訪問而不是 http://www.example.com/basic/web/index.php。這種配置需要將 Web 服務(wù)器的文檔根目錄指向 basic/web 目錄??赡苣氵€會(huì)想隱藏掉 URL 中的 index.php,具體細(xì)節(jié)在 URL 解析和生成一章中有介紹,你將學(xué)到如何配置 Apache 或 Nginx 服務(wù)器實(shí)現(xiàn)這些目標(biāo)。

補(bǔ)充:將 basic/web 設(shè)置為文檔根目錄,可以防止終端用戶訪問 basic/web 相鄰目錄中的私有應(yīng)用代碼和敏感數(shù)據(jù)文件。禁止對其他目錄的訪問是一個(gè)不錯(cuò)的安全改進(jìn)。

補(bǔ)充:如果你的應(yīng)用程序?qū)硪\(yùn)行在共享虛擬主機(jī)環(huán)境中,沒有修改其 Web 服務(wù)器配置的權(quán)限,你依然可以通過調(diào)整應(yīng)用的結(jié)構(gòu)來提升安全性。詳情請參考共享主機(jī)環(huán)境 一章。

推薦使用的 Apache 配置

在 Apache 的 httpd.conf 文件或在一個(gè)虛擬主機(jī)配置文件中使用如下配置。注意,你應(yīng)該將 path/to/basic/web 替換為實(shí)際的 basic/web 目錄。

# 設(shè)置文檔根目錄為 “basic/web”
DocumentRoot "path/to/basic/web"

<Directory "path/to/basic/web">
    # 開啟 mod_rewrite 用于美化 URL 功能的支持(譯注:對應(yīng) pretty URL 選項(xiàng))
    RewriteEngine on
    # 如果請求的是真實(shí)存在的文件或目錄,直接訪問
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    # 如果請求的不是真實(shí)文件或目錄,分發(fā)請求至 index.php
    RewriteRule . index.php

    # ...其它設(shè)置...
</Directory>

推薦使用的 Nginx 配置

為了使用 Nginx,你應(yīng)該已經(jīng)將 PHP 安裝為 FPM SAPI 了。使用如下 Nginx 配置,將 path/to/basic/web 替換為實(shí)際的 basic/web 目錄,mysite.local 替換為實(shí)際的主機(jī)名以提供服務(wù)。

server {
    charset utf-8;
    client_max_body_size 128M;

    listen 80; ## 監(jiān)聽 ipv4 上的 80 端口
    #listen [::]:80 default_server ipv6only=on; ## 監(jiān)聽 ipv6 上的 80 端口

    server_name mysite.local;
    root        /path/to/basic/web;
    index       index.php;

    access_log  /path/to/basic/log/access.log main;
    error_log   /path/to/basic/log/error.log;

    location / {
        # 如果找不到真實(shí)存在的文件,把請求分發(fā)至 index.php
        try_files $uri $uri/ /index.php?$args;
    }

    # 若取消下面這段的注釋,可避免 Yii 接管不存在文件的處理過程(404)
    #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
    #    try_files $uri =404;
    #}
    #error_page 404 /404.html;

    location ~ \.php$ {
        include fastcgi.conf;
        fastcgi_pass   127.0.0.1:9000;
        #fastcgi_pass unix:/var/run/php5-fpm.sock;
        try_files $uri =404;
    }

    location ~ /\.(ht|svn|git) {
        deny all;
    }
}

使用該配置時(shí),你還應(yīng)該在 php.ini 文件中設(shè)置 cgi.fix_pathinfo=0 ,能避免掉很多不必要的 stat() 系統(tǒng)調(diào)用。

還要注意當(dāng)運(yùn)行一個(gè) HTTPS 服務(wù)器時(shí),需要添加 fastcgi_param HTTPS on; 一行,這樣 Yii 才能正確地判斷連接是否安全。

上一篇:請求下一篇:控制器