Yii学习总结之安装配置


Posted in PHP onFebruary 22, 2015

之前写过Yii的文章,正好假期没啥事,就结合以前的文章,Yii的官方文档,再加上最近的关于Yii的收获总结一下,写个系列~~

Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。从 MVC,DAO/ActiveRecord,widgets,caching,等级式RBAC,Web服务,到主题化,I18N和L10N,Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。事实上,Yii是最有效率的PHP框架之一。Yii是一个高性能的PHP5的web应用程序开发框架。通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。

安装Yii

在安装Yii之前,你必须配置好你的开发环境,如一台支持PHP5.1.0以上版本的Web服务器。Yii已经在Windows和Linux操作系统上的 Apache Web服务器测试通过。它可能也会运行在其他平台上的支持PHP5的Web服务器,互联网上公布了很多免费资源,你可能会获得一个配置好PHP5的Web 服务器环境。在这里我们会抛开Web服务器和PHP5的安装。
Yii的安装其实非常简单,实际只需要两个步骤:
从 http://www.yiiframework.com/ 下载Yii框架 解压下载文件到Web服务器可访问的目录下。
安装完成后,建议你检查一下当前服务器是否已经满足了Yii的所有要求。
幸运的是,这样做很容易,Yii自带了一个简单的检查工具。要调用它,在你的浏览器地址栏中输入:http://yourhostname/path/to/yii/requirements/index.php,下面将显示你服务器的配置。使用检查工具,确定服务器没有安装和使用扩展或组件,但它只是给出一个建议,以确保可以确定安装。正如你看到的,下在的检查结果,并非都是 Passed(通过)状态,也有部份显示Warning(警告)。当然,你的配置情况可能会略有不同,因此,你的显示结果也会有所不同。其实下面的细节部份没有必要全部能通过。但部份也是必要的,根据 Conclusion(结论)这个段落的内容:你的服务器配置满足了Yii的最低要求。(Your server configuration satisfies the minimum requirements by Yii.)

创建一个新的应用程序
Yii的安装位置是你已经知道的
WebRoot是你的Web服务器配置的根目录
从你的命令行,进入到framework目录,并执行以下内容:

  % cd Webroot/testdrive/framework

  % yiic webapp ../../testdrive

  Create a Web application under '/WebRoot/testdrive'? [Yes|No]

  Yes

         mkdir /WebRoot/testdrive

         mkdir /WebRoot/testdrive/assets

         mkdir /WebRoot/testdrive/css

         generate css/bg.gif

         generate css/form.css

         generate css/main.css

你的应用已经成功创建到了/WebRoot/demo下。这个webapp命令的作用是创建一个全新的Yii应用。它只需要指定一个参数,无论是绝对还是相对路径都会创建应用程序。它所生成的目录及文件只是应用程序的一个骨架。

testdrive/

   index.php                 Web 应用入口脚本文件

   index-test.php            功能测试使用的入口脚本文件

   assets/                   包含公开的资源文件

   css/                      包含 CSS 文件

   images/                   包含图片文件

   themes/                   包含应用主题

   protected/                包含受保护的应用文件

      yiic                   yiic 命令行脚本

      yiic.bat               Windows 下的 yiic 命令行脚本

      yiic.php               yiic 命令行 PHP 脚本

      commands/              包含自定义的 'yiic' 命令

         shell/              包含自定义的 'yiic shell' 命令

      components/            包含可重用的用户组件

         Controller.php      所有控制器类的基础类

         Identity.php        用来认证的 'Identity' 类

      config/                包含配置文件

         console.php         控制台应用配置

         main.php            Web 应用配置

         test.php            功能测试使用的配置

      controllers/           包含控制器的类文件

         SiteController.php  默认控制器的类文件

      data/                  包含示例数据库

         schema.mysql.sql    示例 MySQL 数据库

         schema.sqlite.sql   示例 SQLite 数据库

         testdrive.db        示例 SQLite 数据库文件

      extensions/            包含第三方扩展

      messages/              包含翻译过的消息

      models/                包含模型的类文件

         LoginForm.php       'login' 动作的表单模型

         ContactForm.php     'contact' 动作的表单模型

      runtime/               包含临时生成的文件

      tests/                 包含测试脚本

      views/                 包含控制器的视图和布局文件

         layouts/            包含布局视图文件

            main.php         所有视图的默认布局

            column1.php      使用单列页面使用的布局

            column2.php      使用双列的页面使用的布局

         site/               包含 'site' 控制器的视图文件

            pages/           包含 "静态" 页面

               about.php     "about" 页面的视图

            contact.php      'contact' 动作的视图

            error.php        'error' 动作的视图(显示外部错误)

            index.php        'index' 动作的视图

            login.php        'login' 动作的视图

         system/             包含系统视图文件

这时不用写一行代码,我们就可以在浏览器中访问如下 URL 来看看我们第一个 Yii 应用:

http://hostname/testdrive/index.php
 
我们会看到的,这个应用包含三个页面:首页、联系页、登录页。首页展示一些关于应用和用户登录状态的信息,联系页显示一个联系表单以便用户填写并提交他们的咨询,登录页允许用户先通过认证然后访问已授权的内容。

配置

在这个应用中,不管到那个页面url中都带有index.php,如果想把它去掉,怎么办。

1. 开启apache的mod_rewrite模块,去掉LoadModule rewrite_module modules/mod_rewrite.so前的"#"符号,确保<Directory "..."></Directory>中有"AllowOverride All"。
2. 在项目中的/protected/config/main.php中添加代码:

'components'=>array(

           ...

           'urlManager'=>array(

                 'urlFormat'=>'path',

                 'showScriptName'=>false,//注意false不要用引号括上

                 'rules'=>array(

                     'sites'=>'site/index',

                 ),

           ),

           ...

       ),

3.配置服务器,Yii可以在Apache和Nginx下配置

1)Apache

在Apache服务器下,Yii需要配置.htaccess文件。配置如下

RewriteEngine on

# prevent httpd from serving dotfiles (.htaccess, .svn, .git, etc.)

RedirectMatch 403 /\..*$

# if a directory or a file exists, use it directly

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php

RewriteRule . index.php

 2)Nginx

Yii可以使用Nginx和PHP的FPM SAPI。配置如下

server {

    set $host_path "/www/mysite";

    access_log  /www/mysite/log/access.log  main;

    server_name  mysite;

    root   $host_path/htdocs;

    set $yii_bootstrap "index.php";

    charset utf-8;

    location / {

        index  index.html $yii_bootstrap;

        try_files $uri $uri/ /$yii_bootstrap?$args;

    }

    location ~ ^/(protected|framework|themes/\w+/views) {

        deny  all;

    }

    #avoid processing of calls to unexisting static files by yii

    location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {

        try_files $uri =404;

    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

    #

    location ~ \.php {

        fastcgi_split_path_info  ^(.+\.php)(.*)$;

        #let yii catch the calls to unexising PHP files

        set $fsn /$yii_bootstrap;

        if (-f $document_root$fastcgi_script_name){

            set $fsn $fastcgi_script_name;

        }

        fastcgi_pass   127.0.0.1:9000;

        include fastcgi_params;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;

        #PATH_INFO and PATH_TRANSLATED can be omitted, but RFC 3875 specifies them for CGI

        fastcgi_param  PATH_INFO        $fastcgi_path_info;

        fastcgi_param  PATH_TRANSLATED  $document_root$fsn;

    }

    # prevent nginx from serving dotfiles (.htaccess, .svn, .git, etc.)

    location ~ /\. {

        deny all;

        access_log off;

        log_not_found off;

    }

}

 使用如上配置,你可以在php.ini中设置cgi.fix_pathinfo=0,这样可以避免许多不必要的系统的stat()调用。

基本安装和配置就到这里~~

PHP 相关文章推荐
zend framework配置操作数据库实例分析
Dec 06 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
利用curl抓取远程页面内容的示例代码
Jul 23 PHP
php提交post数组参数实例分析
Dec 17 PHP
PHP生成各种常见验证码和Ajax验证过程
Jan 10 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
PHP中的多种加密技术及代码示例解析
Oct 20 PHP
php实现用户注册密码的crypt加密
Jun 08 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
PHP实现的自定义图像居中裁剪函数示例【测试可用】
Aug 11 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 PHP
使用php的HTTP请求的库Requests实现美女图片墙
Feb 22 #PHP
十幅图告诉你什么是PHP引用
Feb 22 #PHP
PHP的引用详解
Feb 22 #PHP
PHP实现加密的几种方式介绍
Feb 22 #PHP
php使用parse_url和parse_str解析URL
Feb 22 #PHP
php的闭包(Closure)匿名函数详解
Feb 22 #PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 #PHP
You might like
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
php 购物车完整实现代码
2014/06/05 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
PHP中md5()函数的用法讲解
2019/03/30 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
jQuery 操作option的实现代码
2011/03/03 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
2016/01/08 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
ES6扩展运算符的用途实例详解
2017/08/20 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
python 排列组合之itertools
2013/03/20 Python
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
数学专业毕业生自荐信
2013/11/10 职场文书
连带责任保证书
2014/04/29 职场文书
高二学年自我鉴定范文(2篇)
2014/09/26 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
辞职离别感言
2015/08/04 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书