php2shell scans your codebase for the compatibility problems that break a PHP 8 upgrade, previews every automatic fix as a diff and exports a report your team can review. Scanner and fixer rules follow the Rector upgrade rule sets.
Compatibility rules
Bundled runtime advisories
Report exports
public function build(string $title = null) { $this->label = "Report ${title}${title}"; $encoded = utf8_encode($this->label); $class = get_class(); return [$this->label, $encoded, $class]; }
- $encoded = utf8_encode($this->label); + $encoded = mb_convert_encoding($this->label, 'UTF-8', 'ISO-8859-1'); - $class = get_class(); + $class = static::class;
Five steps, no guesswork. Every change is visible before it touches your code.
Upload a zip archive or paste files. php2shell reads the target version from composer.json when it is available and detects the current runtime version.
Every finding carries the file, the line, the affected PHP version, the severity and the recommended change - plus the runtime advisories that apply to your version.
The dry-run shows a unified diff of every automatic change. Nothing is written until you confirm the fix run.
One click applies the fixable rules and produces a change summary: which files changed, which issues were fixed automatically and which still need a developer.
Paste the output of your test suite to get the pass rate and the list of failing cases before you deploy.
Download a self-contained HTML report or a printable PDF for your team or your client.
The scanner works offline against a bundled advisory database. No API key, no account juggling, no code leaving your machine unless you explicitly request AI assisted review.
The same project can be re-analysed against a new target version, and every run keeps its own report - handy when you look after dozens of sites.
Buy a token quality pack and get a second opinion on the findings the rule engine cannot decide - without connecting your own API key.
Most tools cover a single step of the upgrade. php2shell covers the whole loop.
| Capability | php2shell | PHPCompatibility | Rector alone | Commercial scanners |
|---|---|---|---|---|
| Compatibility scan | Included | Included | No | Included |
| Automatic fixing | Included | No | Included | No |
| Dry-run diff preview | Included | No | Included | No |
| Test verification (PHPUnit) | Included | No | No | No |
| Scan → fix → verify loop | Included | No | No | No |
| Runtime advisory check | Included | No | No | No |
| AI assisted review without your own key | Token quality pack | No | No | No |
| HTML and PDF reports | Included | Partial | No | Usually |
The scanner and the HTML report are free. The automatic fixer and the test verification are unlocked by a license.
For individuals who want to know what will break.
For developers who want the upgrade done today.
For agencies and hosting companies shipping many sites.
Need AI assisted reviews on top of a plan? Add a token quality pack from $9. Support: support@php2shell.top
The scan, the fix and the report run on the server that hosts this tool. The only time a snippet is transmitted to an AI provider is when you explicitly request an AI assisted review - and that snippet is de-identified first and never stored. See the Privacy Policy.
Targets between PHP 7.4 and 8.3 are supported. Rules that only affect a newer target (for example the implicit nullable parameter deprecation of PHP 8.4) are listed in the rule catalog and only reported when you select that target.
No. The fixer applies well-defined Rector style transformations and always shows a diff first. Review the diff, run your test suite in staging and deploy. We recommend the Fixer + Verify plan for teams that need the PHPUnit pass rate next to the diff.
No. Buy a token quality pack inside the tool and the platform pays for the model calls. You never see or export a provider key.
The deprecations that break an upgrade, the error messages you will meet and how to prove that the result still works.
A step-by-step upgrade plan: find the breaking changes before you touch the code, fix them in batches, verify every release.
Read the guideEvery removed and deprecated function, with the exact replacement for each one.
Read the guideUndefined array key, null passed to a parameter, readonly properties and nine more, each with the cause and the fix.
Read the guideThe first scan is free and takes less than a minute.
Featured On