>  기사  >  백엔드 개발  >  Yii的学习(1)--安装配置_PHP教程

Yii的学习(1)--安装配置_PHP教程

WBOY
WBOY원래의
2016-07-13 10:29:11928검색

之前在sina博客写过Yii的文章,来到博客园之后,没再写过关于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目录,并执行以下内容:
  %<span> cd Webroot/testdrive/framework
  </span>% <span>yiic webapp ../../testdrive
  Create a Web application under </span><span>'</span><span>/WebRoot/testdrive</span><span>'</span>? [Yes|<span>No]
  Yes
         </span><span>mkdir</span> /WebRoot/<span>testdrive
         </span><span>mkdir</span> /WebRoot/testdrive/<span>assets
         </span><span>mkdir</span> /WebRoot/testdrive/<span>css
         generate css</span>/<span>bg.gif
         generate css</span>/<span>form.css
         generate css</span>/main.css

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

testdrive/<span>
   index.php                 Web 应用入口脚本文件
   index</span>-<span>test.php            功能测试使用的入口脚本文件
   assets</span>/<span>                   包含公开的资源文件
   css</span>/<span>                      包含 CSS 文件
   images</span>/<span>                   包含图片文件
   themes</span>/<span>                   包含应用主题
   protected</span>/<span>                包含受保护的应用文件
      yiic                   yiic 命令行脚本
      yiic.bat               Windows 下的 yiic 命令行脚本
      yiic.php               yiic 命令行 PHP 脚本
      commands</span>/              包含自定义的 <span>'</span><span>yiic</span><span>'</span><span> 命令
         shell</span>/              包含自定义的 <span>'</span><span>yiic shell</span><span>'</span><span> 命令
      components</span>/<span>            包含可重用的用户组件
         Controller.php      所有控制器类的基础类
         Identity.php        用来认证的 </span><span>'</span><span>Identity</span><span>'</span><span> 类
      config</span>/<span>                包含配置文件
         console.php         控制台应用配置
         main.php            Web 应用配置
         test.php            功能测试使用的配置
      controllers</span>/<span>           包含控制器的类文件
         SiteController.php  默认控制器的类文件
      data</span>/<span>                  包含示例数据库
         schema.mysql.sql    示例 MySQL 数据库
         schema.sqlite.sql   示例 SQLite 数据库
         testdrive.db        示例 SQLite 数据库文件
      extensions</span>/<span>            包含第三方扩展
      messages</span>/<span>              包含翻译过的消息
      models</span>/<span>                包含模型的类文件
         LoginForm.php       </span><span>'</span><span>login</span><span>'</span><span> 动作的表单模型
         ContactForm.php     </span><span>'</span><span>contact</span><span>'</span><span> 动作的表单模型
      runtime</span>/<span>               包含临时生成的文件
      tests</span>/<span>                 包含测试脚本
      views</span>/<span>                 包含控制器的视图和布局文件
         layouts</span>/<span>            包含布局视图文件
            main.php         所有视图的默认布局
            column1.php      使用单列页面使用的布局
            column2.php      使用双列的页面使用的布局
         site</span>/               包含 <span>'</span><span>site</span><span>'</span><span> 控制器的视图文件
            pages</span>/           包含 <span>"</span><span>静态</span><span>"</span><span> 页面
               about.php     </span><span>"</span><span>about</span><span>"</span><span> 页面的视图
            contact.php      </span><span>'</span><span>contact</span><span>'</span><span> 动作的视图
            error.php        </span><span>'</span><span>error</span><span>'</span><span> 动作的视图(显示外部错误)
            index.php        </span><span>'</span><span>index</span><span>'</span><span> 动作的视图
            </span><span>login</span>.php        <span>'</span><span>login</span><span>'</span><span> 动作的视图
         system</span>/             包含系统视图文件

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

http:<span>//</span><span>hostname/testdrive/index.php</span>

 

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

配置

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

1. 开启apache的mod_rewrite模块,去掉LoadModule rewrite_module modules/mod_rewrite.so前的"#"符号,确保中有"AllowOverride All"。 2. 在项目中的/protected/config/main.php中添加代码:
'components'=><span>array</span><span>(
           </span>...
           'urlManager'=><span>array</span><span>(
                 </span>'urlFormat'=>'path',
                 'showScriptName'=><span>false</span>,<span>//</span><span>注意false不要用引号括上</span>
                 'rules'=><span>array</span><span>(
                     </span>'sites'=>'site/index',<span>
                 )</span>,<span>
           )</span>,
           ...<span>
       )</span>,

 

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

1)Apache

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

<span>RewriteEngine on

# prevent httpd from serving dotfiles (.htaccess, .svn, .git, etc.)
RedirectMatch </span><span>403</span> /\..*<span>$
# </span><span>if</span> a directory or a <span>file</span><span> exists, use it directly
RewriteCond </span>%{REQUEST_FILENAME} !-<span>f
RewriteCond </span>%{REQUEST_FILENAME} !-<span>d
# otherwise forward it to index.php
RewriteRule . index.php</span>

 2)Nginx

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

<span>server {
    set $host_path </span><span>"</span><span>/www/mysite</span><span>"</span><span>;
    access_log  </span>/www/mysite/log/<span>access.log  main;

    server_name  mysite;
    root   $host_path</span>/<span>htdocs;
    set $yii_bootstrap </span><span>"</span><span>index.php</span><span>"</span><span>;

    charset utf</span>-<span>8</span><span>;

    location </span>/<span> {
        index  index.html $yii_bootstrap;
        try_files $uri $uri</span>/ /$yii_bootstrap?<span>$args;
    }

    location </span>~ ^/(protected|framework|themes/\<span>w</span>+/<span>views) {
        deny  all;
    }

    #avoid processing of calls to unexisting static files by yii
    location </span>~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|<span>zip</span>|<span>rar)$ {
        try_files $uri </span>=<span>404</span><span>;
    }

    # pass the PHP scripts to FastCGI server listening on </span><span>127.0</span>.<span>0.1</span>:<span>9000</span><span>
    #
    location </span>~<span> \.php {
        fastcgi_split_path_info  </span>^(.+\.php)(.*<span>)$;

        #let yii catch the calls to unexising PHP files
        set $fsn </span>/<span>$yii_bootstrap;
        </span><span>if</span> (-<span>f $document_root$fastcgi_script_name){
            set $fsn $fastcgi_script_name;
        }

        fastcgi_pass   </span><span>127.0</span>.<span>0.1</span>:<span>9000</span><span>;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fsn;

        #PATH_INFO and PATH_TRANSLATED can be omitted, but RFC </span><span>3875</span> specifies them <span>for</span><span> 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 </span>~ /<span>\. {
        deny all;
        access_log off;
        log_not_found off;
    }
}</span>

 

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

 

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

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/778932.htmlTechArticle之前在sina博客写过Yii的文章,来到博客园之后,没再写过关于Yii的文章,正好端午假期没啥事,就结合以前的博客,Yii的官方文档,再加上...
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.