Yii最新中文手册,翻译内容详细,简单易懂。
Yii是一个快速,安全和高效的PHP框架。主要特点:灵活但务实,开箱即用,具有合理的默认值。
您可以通过两种方式安装Yii,即使用Composer软件包管理器或下载存档文件。前者是首选方式,因为它允许您通过简单地运行单个命令来安装新扩展或更新Yii。
Yii的标准安装会导致框架和项目模板的下载和安装。项目模板是一个可运行的Yii项目,实现了一些基本功能,例如登录名,联系表等。其代码以推荐的方式组织。因此,它可以作为您项目的良好起点。
在本节和接下来的几节中,我们将描述如何使用所谓的“ 基本项目模板”安装Yii,以及如何在该模板之上实现新功能。Yii还提供了另一个称为“ 高级项目模板”的模板,该模板更适合在团队开发环境中用于开发多层应用程序。
信息:基本项目模板适用于开发90%的Web应用程序。它与高级项目模板的不同之处主要在于其代码的组织方式。如果您是Yii的新手,我们强烈建议您使用基本项目模板,因为它简单易用但功能强大。
如果尚未安装Composer,则可以按照getcomposer.org上的说明进行 安装。在Linux和Mac OS X上,您将运行以下命令:
curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer
在Windows上,您将下载并运行Composer-Setup.exe。
如果遇到任何问题,请参考Composer文档的“ 故障排除”部分。如果您不熟悉Composer,我们也建议您至少阅读 Composer文档的“ 基本用法”部分。
在本指南中,所有composer命令都假定您已全局安装composer , 因此该composer
命令可作为其使用。如果composer.phar
在本地目录中使用,则必须相应地调整示例命令。
如果您以前已经安装过Composer,请确保使用最新版本。您可以通过运行更新Composer composer self-update
。
注意:在安装Yii期间,Composer将需要从Github API请求许多信息。请求的数量取决于您的应用程序具有的依赖项数量,并且可能大于 Github API速率限制。如果您达到此限制,则Composer可能会要求您提供Github登录凭据以获取Github API访问令牌。在快速连接上,您可能早于Composer可以达到此限制,因此我们建议在安装Yii之前配置访问令牌。请参阅有关Github API令牌的Composer文档, 以获取有关如何执行此操作的说明。
安装Composer后,您可以通过在Web可访问的文件夹下运行以下命令来安装Yii应用程序模板:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
这将在名为的目录中安装Yii应用程序模板的最新稳定版本basic
。您可以根据需要选择其他目录名称。
信息:如果
composer create-project
命令失败,您还可以参考Composer文档中的“ 疑难解答”部分以 了解常见错误。修复错误后,可以通过composer update
在basic
目录中运行来恢复中止的安装。
提示:如果要安装Yii的最新开发版本,则可以改用以下命令,它添加了一个稳定选项:
composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-basic basic请注意,不应将Yii的开发版本用于生产,因为它可能会破坏您正在运行的代码。
从存档文件安装Yii涉及三个步骤:
从yiiframework.com下载存档文件。
将下载的文件解压缩到Web可访问的文件夹中。
config/web.php
通过输入cookieValidationKey
配置项的密钥来修改文件(如果使用Composer安装Yii,这将自动完成):
// !!! insert a secret key in the following (if it is empty) - this is required by cookie validation'cookieValidationKey' => 'enter your secret key here',
上面的安装说明显示了如何安装Yii,Yii还创建了一个开箱即用的基本Web应用程序。对于大多数项目,无论大小,此方法都是一个很好的起点。如果您刚刚开始学习Yii,则特别适合。
但是还有其他可用的安装选项:
如果你只是想安装核心框架,并想从头开始构建一个完整的应用程序,你可以按照说明中解释从头开始构建应用程序。
如果要从更适合团队开发环境的更复杂的应用程序开始,则可以考虑安装Advanced Project Template。
Yii依赖Bower和/或NPM软件包来安装资产(CSS和JavaScript)库。它使用Composer获取这些库,从而允许同时解析PHP和CSS / JavaScript软件包版本。这可以通过使用asset-packagist.org或composer资产插件来实现。请参阅资产文档以获取更多详细信息。
您可能想通过本地Bower / NPM客户端管理资产,使用CDN或完全避免资产安装。为了防止通过Composer安装资产,请将以下几行添加到您的'composer.json'中:
"replace": {"bower-asset/jquery": ">=1.11.0","bower-asset/inputmask": ">=3.2.0","bower-asset/punycode": ">=1.3.0","bower-asset/yii2-pjax": ">=2.0.0"},
注意:如果通过Composer绕开资产安装,则您应负责资产安装和解决版本冲突。为来自不同扩展名的资产文件之间可能存在的矛盾做好准备。
安装完成后,可以在项目根目录中运行以下控制台命令来配置Web服务器(请参阅下一节)或使用 内置的PHP Web服务器:
php yii serve
注意:默认情况下,HTTP服务器将侦听端口8080。但是,如果该端口已在使用中,或者您希望以此方式为多个应用程序提供服务,则可能需要指定要使用的端口。只需添加--port参数:
php yii serve --port=8888
您可以使用浏览器通过以下URL访问已安装的Yii应用程序:
http://localhost:8080/
您应该看到上面的“恭喜!” 浏览器中的页面。如果不是,请检查您的PHP安装是否满足Yii的要求。您可以使用以下方法之一检查是否满足最低要求:
复制/requirements.php
到/web/requirements.php
,然后使用浏览器通过进行访问http://localhost/requirements.php
运行以下命令:
cd basic php requirements.php
您应该配置PHP安装,使其符合Yii的最低要求。最重要的是,您应该拥有PHP 5.4或更高版本。最好是最新的PHP7。如果您的应用程序需要数据库,则还应该安装PDO PHP Extension 和相应的数据库驱动程序(例如,pdo_mysql
对于MySQL数据库)。
信息:如果您只是试驾Yii而无意将其部署到生产服务器,则可以暂时跳过此小节。
在Windows,Mac OS X或运行PHP 5.4或更高版本的Linux上,根据上述说明安装的应用程序应与Apache HTTP服务器或Nginx HTTP服务器配合使用。Yii 2.0也与facebook的HHVM兼容 。但是,在某些情况下,HHVM的行为不同于本机PHP,因此在使用HHVM时必须格外小心。
在生产服务器上,您可能需要配置Web服务器,以便可以通过URL http://www.example.com/index.php
而不是通过URL访问该应用程序http://www.example.com/basic/web/index.php
。这种配置需要将Web服务器的文档根目录指向该文件basic/web
夹。您可能还想index.php
从URL 隐藏,如“ 路由和URL创建”部分所述。在本小节中,您将学习如何配置Apache或Nginx服务器以实现这些目标。
信息:通过设置
basic/web
为文档根目录,还可以防止最终用户访问存储在的同级目录中的私有应用程序代码和敏感数据文件basic/web
。拒绝访问其他文件夹可以提高安全性。
信息:如果您的应用程序将在没有修改其Web服务器配置权限的共享宿主环境中运行,则您仍可以调整应用程序的结构以提高安全性。有关更多详细信息,请参阅“ 共享主机环境”部分。
信息:如果您在反向代理后面运行Yii应用程序,则可能需要在请求组件中配置 Trusted代理和标头。
在Apache的httpd.conf
文件或虚拟主机配置中使用以下配置。请注意,您应该path/to/basic/web
用的实际路径替换basic/web
。
# Set document root to be "basic/web"DocumentRoot "path/to/basic/web"<Directory "path/to/basic/web"> # use mod_rewrite for pretty URL support RewriteEngine on # if $showScriptName is false in UrlManager, do not allow accessing URLs with script name RewriteRule ^index.php/ - [L,R=404] # If a directory or a file exists, use the request directly RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-d # Otherwise forward the request to index.php RewriteRule . index.php# ...other settings...</Directory>
要使用Nginx,您应该将PHP作为FPM SAPI安装。您可以使用以下Nginx配置,用要服务path/to/basic/web
的实际路径 basic/web
和mysite.test
实际主机名代替。
server {charset utf-8;client_max_body_size 128M;listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 server_name mysite.test;root/path/to/basic/web;index index.php;access_log/path/to/basic/log/access.log;error_log /path/to/basic/log/error.log;location / {# Redirect everything that isn't a real file to index.php try_files $uri $uri/ /index.php$is_args$args; }# uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { #try_files $uri =404; #} #error_page 404 /404.html; # deny accessing php files for the /assets directory location ~ ^/assets/.*\.php$ {deny all; }location ~ \.php$ {include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_pass 127.0.0.1:9000;#fastcgi_pass unix:/var/run/php5-fpm.sock; try_files $uri =404; }location ~* /\. {deny all; } }
使用此配置时,还应该cgi.fix_pathinfo=0
在php.ini
文件中进行设置,以避免进行许多不必要的系统stat()
调用。
另请注意,在运行HTTPS服务器时,您需要进行添加,fastcgi_param HTTPS on;
以便Yii可以正确检测连接是否安全。
您可以将NGINX Unit与PHP语言模块一起运行基于Yii的应用程序。这是一个示例配置。
{"listeners": {"*:80": {"pass": "routes/yii" } },"routes": {"yii": [ {"match": {"uri": ["!/assets/*","*.php","*.php/*" ] },"action": {"pass": "applications/yii/direct" } }, {"action": {"share": "/path/to/app/web/","fallback": {"pass": "applications/yii/index" } } } ] },"applications": {"yii": {"type": "php","user": "www-data","targets": {"direct": {"root": "/path/to/app/web/" },"index": {"root": "/path/to/app/web/","script": "index.php" } } } } }
您还可以设置 PHP环境或php.ini
以相同的配置提供自定义。
建议将应用程序托管在虚拟主机(网站)中,在该主机中文档根目录指向path/to/app/web
文件夹,并且该网站配置为运行PHP。在该web
文件夹中,您必须放置一个名为web.config
ie 的文件path/to/app/web/web.config
。文件内容应为以下内容:
<?xml version="1.0" encoding="UTF-8"?><configuration><system.webServer><directoryBrowse enabled="false" /> <rewrite> <rules> <rule name="Hide Yii Index" stopProcessing="true"> <match url="." ignoreCase="false" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> </conditions> <action type="Rewrite" url="index.php" appendQueryString="true" /> </rule> </rules> </rewrite></system.webServer></configuration>