安装Yii框架需先确保PHP环境和Composer就绪,再通过composer create-project命令创建基础或高级版应用,随后配置Web服务器将入口指向项目web目录,并检查PHP版本及必要扩展如mbstring、intl等是否启用。

安装Yii框架,说白了,就是把它的核心代码和依赖项弄到你的项目里,然后告诉你的Web服务器去哪里找它。最主流、也是我个人推荐的方式,是利用Composer这个PHP的包管理工具来完成。它能帮你处理好各种版本依赖,省心不少。
要让Yii跑起来,首先得确保你的PHP环境是OK的,并且Composer已经安装好了。这就像盖房子,地基和工具都得先备齐。
第一步,当然是确保Composer已经全局可用。如果你还没装,去Composer官网(getcomposer.org)找找安装教程,几行命令的事,不难。
接下来,我们用Composer来创建Yii项目。Yii 2.0有两个主要的应用模板,一个是基础版(basic),一个是高级版(advanced)。大多数时候,基础版就够用了,它结构简洁,适合小型项目或API服务。高级版则自带前后端分离,适合大型、复杂的应用。
立即学习“PHP免费学习笔记(深入)”;
创建基础版应用:
打开你的终端或命令行工具,切换到你希望创建项目的目录,然后运行:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic-app
这里的
basic-app
创建高级版应用:
如果你确定需要前后端分离的复杂结构,可以这样:
composer create-project --prefer-dist yiisoft/yii2-app-advanced advanced-app
安装完成后,进入到你新创建的项目目录(比如
cd basic-app
web
最后一步是初始化项目。对于高级版应用,这尤其关键,因为它会生成一些必要的配置文件。在项目根目录运行:
php init
根据提示选择开发环境或生产环境。
至此,Yii的代码已经躺在你的硬盘里了。但要让浏览器能访问它,还需要配置你的Web服务器,比如Apache或Nginx。
说实话,Yii框架对PHP版本的要求,其实是随着时间推移不断提高的。Yii 2.0刚出来那会儿,PHP 5.4就能跑起来,但现在,我个人强烈建议你至少使用PHP 7.2或更高版本。不仅仅是因为性能上的巨大提升(PHP 7.x比5.x快太多了),更是为了能享受到更多现代PHP的语法特性和安全更新。如果你还在用PHP 5.x,那真的该考虑升级了,很多新的库和工具都已经不再支持它了。
除了PHP版本,Yii框架还需要一些核心的PHP扩展才能正常工作。这些扩展通常在PHP安装时就默认启用了,但检查一下总没错。
mbstring
intl
pdo
pdo_mysql
pdo_pgsql
openssl
gd
imagick
fileinfo
curl
检查这些扩展是否启用,可以在命令行运行
php -m
phpinfo()
php.ini
;
Composer在安装Yii或者其他任何PHP包时,确实偶尔会出点小岔子。这很正常,毕竟网络环境、权限、依赖冲突这些都是变数。
一个常见的问题是内存限制。Composer在处理大量依赖时,可能会超出PHP的默认内存限制。你会看到类似“Allowed memory size of X bytes exhausted”的错误。解决办法是临时提高PHP的内存限制,你可以在运行Composer命令时加上
php -d memory_limit=-1
php -d memory_limit=-1 /usr/local/bin/composer create-project ...
或者,直接修改你的
php.ini
memory_limit
512M
1G
另一个是网络问题。如果你的网络不稳定,或者访问Composer的Packagist仓库速度慢,可能会导致下载失败。有时候,切换一下网络环境,或者配置Composer使用国内镜像源(比如阿里云Composer镜像)能有效解决:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
这能显著加快下载速度。
版本冲突也是一个头疼的问题。当你项目里已经有一些依赖,再引入Yii时,如果Yii要求的某个包版本和现有包冲突,Composer会报错。这时候,你需要仔细阅读错误信息,它会告诉你哪些包冲突了,以及冲突的原因。通常,你可以尝试更新Composer本身(
composer self-update
composer.json
~2.0.0
^2.0
有时候,缓存问题也会捣乱。Composer有自己的缓存,偶尔清一下能解决一些奇怪的问题:
composer clear-cache
遇到问题不要慌,仔细看Composer给出的错误信息,它通常会告诉你问题出在哪里,以及可能的解决方案。这就像编程中调试bug一样,是必经之路。
Web服务器的配置是让Yii应用在浏览器中可见的关键一步。无论是Apache还是Nginx,核心思想都是将你的域名或IP地址指向Yii项目根目录下的
web
web
index.php
对于Apache服务器:
你需要启用
mod_rewrite
httpd.conf
conf.d/
sites-available/
LoadModule rewrite_module modules/mod_rewrite.so
然后,为你的Yii应用创建一个虚拟主机配置。例如:
<VirtualHost *:80>
ServerName your-domain.com # 替换成你的域名或IP
DocumentRoot "/path/to/your/yii-app/web" # 替换成你Yii项目的web目录绝对路径
<Directory "/path/to/your/yii-app/web">
# 允许.htaccess文件中的指令覆盖父目录的设置
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 如果你希望日志文件独立,可以配置
ErrorLog "${APACHE_LOG_DIR}/your-domain-error.log"
CustomLog "${APACHE_LOG_DIR}/your-domain-access.log" combined
</VirtualHost>特别要注意
DocumentRoot
web
<Directory>
AllowOverride All
.htaccess
对于Nginx服务器:
Nginx的配置相对简洁高效。你需要在Nginx的
sites-available
conf.d
your-domain.conf
server {
listen 80;
server_name your-domain.com; # 替换成你的域名或IP
root /path/to/your/yii-app/web; # 同样指向Yii项目的web目录
index index.php;
charset utf-8;
location / {
# 尝试直接访问文件,如果不存在,则将请求重写到index.php
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
# 确保php-fpm服务正在运行
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php-fpm.sock; # 根据你的php-fpm配置修改
# 或者 fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS on; # 如果你的应用在HTTPS下运行
}
# 阻止访问敏感文件
location ~ /\.ht {
deny all;
}
location ~ /(protected|framework|config|common|mail|runtime|vendor|build)/ {
deny all;
}
}这里同样,
root
web
location /
try_files
index.php
location ~ \.php$
sites-enabled
无论是Apache还是Nginx,配置完成后,在浏览器中访问你的域名或IP,如果看到Yii的欢迎页面,那就说明环境配置成功了。如果遇到404或500错误,通常是路径、权限或者URL重写规则的问题,需要仔细检查日志文件来定位。
以上就是PHP怎么安装Yii_PHP Yii框架环境配置的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号