Framework
yiisoft/yii2 avatar
yiisoft/yii2

Yii 2's minimum PHP version reached end of life years before the framework's newest patch

Yii 2: The Fast, Secure and Professional PHP Framework

14,276 stars6,739 forksPHPBSD-3-Clause

At a glance

What is it?
Yii 2 is a PHP web framework on a three-clause BSD licence, with a static analyser integration, and documentation published three ways. It is actively developed, with a patch release in May 2026 and a push to the default branch days before this was written. Two things are worth reading before you adopt it. The declared minimum language version reached end of life four years ago, and the release cycle policy that would tell you which versions are supported lives on a website rather than in the repository.
Who is it for?
This is still a reasonable choice for a PHP codebase that already exists, because it works out of the box with sensible defaults and its upgrade guide from the older generation is written for exactly your situation if that is where you are. The tooling around it is more serious than the readme suggests, with a committed dependency lock, a refactoring configuration and a full static analysis setup.
Can I use it commercially?
Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly PHP, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • yiisoft/yii214,276 ★ · -13
Star history
Repository2026-09-222026-11-13
yiisoft/yii214.3k14.3k

-13 Stars in the last 52 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The declared language floor stopped receiving security updates four years ago

The installation section carries an importance marker and a version, and the version is the thing to look at.

It states the minimum required language version, and adds that the framework works best with a later one. So the supported floor is the older one and the recommendation is the newer one.

The older one reached its end of life in late 2022. It receives no security patches, which means a deployment on the declared minimum is running an unpatched runtime underneath an application framework that describes itself in its own opening line as fast and secure.

That combination is the thing to hold on to. Nothing stops you installing on the floor version, and a framework cannot fix the runtime under it. If your application has to run on that version of the language, the security property is the language's, not the framework's, and the framework's front page is not evidence either way.

There is a version compatibility section further down, after the documentation section, and it does not resolve this. It points to a page on the project's website for detailed information about supported versions.

So the consequence is that the floor is a compatibility statement rather than a security one, and the check you need to run is against your own runtime, not against the framework's documentation.

The repository root holds five static analysis configuration files in two naming conventions

List the top level of this repository and there are four files configuring one static analyser: phpstan.dist.neon, phpstan-baseline.neon, phpstan-7x.dist.neon and phpstan-baseline-7x.neon.

There is a primary configuration and a primary baseline, and then a configuration and a baseline that both carry a 7x suffix.

Each configuration has its own committed baseline.

The baseline files are the interesting part. A baseline is a list of findings the project has decided not to fix, checked in so that new findings fail and old ones do not. It is a good practice and an honest one, and the size of the committed baseline is a rough measure of the accumulated technical debt.

So the consequence is that this project treats static analysis as a gate with a debt ledger rather than as an aspiration.

The documented directory structure omits everything that is not contributed code

The readme has a directory structure section and it lists four directories.

Three of them are the ones you would expect: a documentation directory, a directory for the core framework code, and a directory for the tests of that code. The fourth is a directory described as internally used build tools.

Here is what is not listed. There is a dependency manifest and a committed dependency lock. There are four static analysis files. There is a refactoring tool configuration, which is what you use to automate the mechanical part of a major version upgrade. There is a code style configuration, a formatter configuration, and a lint configuration for the other language that appears in the repository. There is a Dockerfile. There is a unit test configuration.

So the documented structure describes the part of the repository you contribute code to, and the part you run tooling against is roughly half the root.

There is also more than one continuous integration system configured. GitHub Actions workflows (the README links build, static and zizmor workflows) and a configuration file for a different hosted system, plus the coverage service configuration.

The consequence is that a new contributor reading the structure section will not know what the code style file or the refactoring file is for, and will find that running the project's own checks involves tools the readme does not mention.

The documentation is published three ways, and the primary link is a third-party mirror

The documentation section lists four things and the fourth is the interesting one.

A guide and a class reference are linked from the project's own site. A PDF version of the guide is offered as a download. Then there is what the readme calls a guide mirror, and it is a link to a domain that is not the project's, with a note that it is updated every fifteen minutes.

So alongside the guide and reference on the project's own site, there is a mirror hosted elsewhere and regenerated on a schedule, and a PDF you can download and keep.

For a framework, that PDF is a genuinely useful artefact and an unusual one to publish. It also means an organisation reviewing the framework's documentation may end up auditing a static file rather than the live documentation.

There is also an upgrade guide, written for people moving from the previous major version, linked as a way to get an idea of what changed. That is the most directly useful link on the page if you are running the older generation.

So the consequence is that the documentation has three distribution channels with different owners and different update characteristics, and the readme does not distinguish between them beyond calling one of them a mirror.

The patch cadence on the current line is four to eight months, and the support policy is on a website

Read the three most recent releases and then read the section that is supposed to tell you whether they are supported.

The releases are two patch versions in 2026, four months apart, then one in mid 2025. So roughly one patch every four to seven months on a single minor line.

The section titled versions and language compatibility contains one line: a note pointing to a release cycle page on the project's website for detailed information about supported versions.

So the support matrix, which is the thing you would consult to decide whether a version still gets fixes, is not in the repository. It is on the same site as the guide and the class reference, which means it can change without a commit and without a release.

That is a normal arrangement for a project with a website, and it is also the arrangement where a support policy is easiest to miss. The readme tells you the versions exist and points you elsewhere for whether they are alive.

The other detail worth registering is the branch name in the artefact names themselves. Every release is on the two-point-zero line and the newest is a patch well past fifty. So this is a stable branch with a long life rather than an actively versioned product, and the default branch took a push days before this was written.

The consequence is that you should check the release cycle page before pinning, and not infer support from the absence of an announcement.

The front page spends a section on how to credit the framework

There is a section near the end of the front page about spreading the word, and it is longer than you would expect.

It opens by saying that acknowledging the framework is as important as contributing to it, and then gives instructions for two cases. If you are giving a presentation, it suggests using the project logo on your title slide. If you are using it in an open source project, it suggests a badge.

It then provides the badge markup as a ready-to-paste snippet, so you do not have to find it:

code
[](https://www.yiiframework.com/)

Then sponsorship, which asks you to become a sponsor or a backer.

None of this is objectionable and it is all fairly standard open source practice. It is worth noting because it is the only part of this front page about the framework's relationship with its users rather than about the framework, and it tells you something about how a project with a large installed base spends its front page space.

So the consequence is that the front page's least technical section is also its longest, and the most technical information on the page is a link to a chapter.

Security reports go to a web form and the readme asks you not to use the tracker

There is a section about reporting security problems and it carries a warning marker.

It asks you not to report security vulnerabilities through public issues on the hosting platform, and to refer instead to a dedicated page on the project's website that describes the proper workflow.

That is the right instruction and the right mechanism. A framework advisory chain where the first report is a public issue is a disclosure before a fix, and for a framework with a large installed base that is a real risk rather than a theoretical one.

What the readme does not do is say what the workflow is. Whether there is a deadline, whether you get credit, whether there is a safe harbour for a researcher, and how long a fix takes, all of that is one click away.

The contributing section above it does describe a reporting route for ordinary bugs, with a document in the repository for it, so the two are clearly distinguished.

So the consequence is that a researcher who reads only the readme knows to use the website and nothing else. For a framework deciding whether to depend on this one, the disclosure process is a reasonable thing to check before you commit.

Editorial conclusion

This is still a reasonable choice for a PHP codebase that already exists, because it works out of the box with sensible defaults and its upgrade guide from the older generation is written for exactly your situation if that is where you are. The tooling around it is more serious than the readme suggests, with a committed dependency lock, a refactoring configuration and a full static analysis setup. Two things to check. Which language version you are on, because the declared floor is one that stopped receiving security fixes and the framework will not stop you installing it. And which release line is supported, because that answer is on a website and not in the repository, and the patch cadence on the visible line is roughly every four to seven months.

Frequently asked questions

Is Yii still relevant?

It is actively developed. The default branch took a push on 2026-10-30, and the newest release is a patch version from May 2026. It is on the two-point-zero line with a long patch history and an upgrade guide written for people moving from the previous generation. What the front page does not tell you is which versions are supported, because that is on a separate page on the project's website.

What is Yii 2?

A PHP web framework described on its front page as a modern framework designed to be a solid foundation for a PHP application, fast, secure and efficient, and working out of the box with reasonable defaults. It is licensed under a three-clause BSD licence and is installed from a package registry. The readme links a step-by-step guide for installation, a class reference, a downloadable PDF of the guide, and an upgrade guide for the previous generation.

What PHP version does Yii 2 require?

The installation section states the minimum required version, which is a release that has reached end of life, and notes that the framework works best with a later one. There is no upper bound in the readme. The section on versions and language compatibility does not list a support matrix; it links to a release cycle page on the project's website for detailed information about supported versions.

How do I install Yii 2?

The front page gives no install command and points to the installation chapter of the guide for step-by-step instructions. It does list what the repository itself contains: a directory for internally used build tools, a documentation directory, the core framework code and its tests. The package is available through a PHP package registry.

How do I report a security issue in Yii 2?

Not through public issues. The front page carries a warning asking you not to report security vulnerabilities that way and to refer to a dedicated page on the project's website describing the proper workflow. Ordinary bugs go through a separate route with a document in the repository. The readme does not describe the security workflow itself, so what you learn from it is where to go rather than what to expect.

Official sources

  1. License: BSD-3-Clause
  2. Project website
  3. README
  4. Releases
  5. yiisoft/yii2 on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/yiisoft-yii2.svg)](https://hysenlabs.com/projects/yiisoft-yii2)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/yiisoft-yii2.svg)](https://hysenlabs.com/projects/yiisoft-yii2)

Was this useful?