Title: Leaplens &#8211; Upgrade Advisor for PHP
Author: maksymkotenko
Published: <strong>3 November 2026</strong>
Last modified: 4 November 2026

---

Search plugins

![](https://ps.w.org/leaplens/assets/banner-772x250.png?rev=3786026)

![](https://ps.w.org/leaplens/assets/icon.svg?rev=3781586)

# Leaplens – Upgrade Advisor for PHP

 Oleh [maksymkotenko](https://profiles.wordpress.org/maksymkotenko/)

[Download](https://downloads.wordpress.org/plugin/leaplens.0.2.0.zip)

 * [Details](https://ms.wordpress.org/plugins/leaplens/#description)
 * [Reviews](https://ms.wordpress.org/plugins/leaplens/#reviews)
 * [Pembangunan](https://ms.wordpress.org/plugins/leaplens/#developers)

 [Support](https://wordpress.org/support/plugin/leaplens/)

## Description

Your host wants you on PHP 8.4 or 8.5, and you want to know what breaks first. Leaplens
reads the code of your plugins and themes, finds what a newer PHP removes or deprecates,
and tells you what to do about each one.

**One verdict per plugin and theme**

 * **Ready** – nothing changes for it on the PHP version you picked.
 * **Notices** – it keeps working; it only logs deprecation notices that its author
   should fix before the next major PHP.
 * **Update** – the version you have breaks, a newer one is available. With “Also
   check available updates” on, Leaplens downloads that update to a temporary folder,
   scans it and tells you whether updating fixes the problem. Nothing is installed.
 * **Fix needed** – no update fixes it yet: report it to the author (the support
   forum link is right there), or, for premium and custom code, send the exact lines
   to the vendor or developer.
 * **Replace** – it breaks, and it is closed on WordPress.org or has not been updated
   for two years.

**Only what is new for your site**

A problem that already applies to the PHP version the site runs today is not counted:
the site already works with it, so that code is either guarded or never runs. You
can still show those lines with one click. This keeps the list short and the verdicts
honest.

**Not fooled by version checks**

Plugins often keep old code for old PHP behind a check: `if ( PHP_VERSION_ID < 80000)`,`
version_compare( PHP_VERSION, '8.0', '<' )`, `function_exists( 'get_magic_quotes_gpc')&&
get_magic_quotes_gpc()` or `defined( 'MB_OVERLOAD_STRING' )`. When such a check 
is false on the target version, the code behind it never runs there, so it is not
counted. Leaplens follows `if`, `elseif` and `else` branches, `&&`, `||` and `? :`;
the lines it set aside are one click away.

**PHP 7.4 to 8.5**

Pick the target version: 7.4, 8.0, 8.1, 8.2, 8.3, 8.4 or 8.5. The checks come from
the PHPCompatibility rules for PHP_CodeSniffer, development version, which already
cover PHP 8.5: the backtick operator, `(boolean)`, `(integer)`, `(double)` and `(
binary)` casts, `case` ending with a semicolon, `curl_close()`, `imagedestroy()`,`
mysqli_execute()` and the other 8.5 deprecations, along with everything removed 
in PHP 8.0 and deprecated in 8.1 to 8.4.

**Built for shared hosting**

 * Runs inside WordPress: does not need `exec()`, a command line or an external 
   scanning service.
 * Scans in short steps of a few seconds, so it never hits the PHP time limit. Pause,
   resume or cancel at any time.
 * Leave the page and the scan goes on in the background through WP-Cron.
 * A file that would exhaust memory is skipped and listed, and the scan moves on.
   Files larger than 1 MB are skipped and listed.

**Exact lines**

Every finding names the file, the line, what changed and in which PHP version, with
the suggested replacement where one exists. The Plugins screen shows a short note
under each plugin the last scan found problems in.

**Limits of static analysis**

Leaplens reads code without running it. It cannot see code built at run time, and
it follows a version or function check only when the check surrounds the line: code
after an early `return` for old PHP, or behind a check in another function, is still
counted. Treat the verdicts as a checklist, and test the switch on a staging copy
first.

### Third-party code

The `vendor` folder is the scanning engine, not a development tool: Leaplens loads
these libraries at run time to read the code of your plugins and themes.

 * PHP_CodeSniffer 4.0.4 – BSD-3-Clause – https://github.com/PHPCSStandards/PHP_CodeSniffer
 * PHPCSUtils 1.2.3 – LGPL-3.0-or-later – https://github.com/PHPCSStandards/PHPCSUtils
 * PHPCompatibility 10 development version – LGPL-3.0-or-later – https://github.
   com/PHPCompatibility/PHPCompatibility (commit 4b1ac835)

Tests, documentation and command-line-only files are left out. PHPCSUtils and PHPCompatibility
are otherwise unchanged; in PHP_CodeSniffer the command-line code paths that call
exec(), shell_exec() and proc_open() are removed, so the plugin ships no such calls.
Their license files are in the `vendor` folder.

## Screenshots

[⌊Pick the target PHP version and what to scan.⌉⌊Pick the target PHP version and
what to scan.⌉[

Pick the target PHP version and what to scan.

[⌊One verdict per plugin and theme, and what to do about it.⌉⌊One verdict per plugin
and theme, and what to do about it.⌉[

One verdict per plugin and theme, and what to do about it.

[⌊The exact files and lines, with the PHP version that changed each one.⌉⌊The exact
files and lines, with the PHP version that changed each one.⌉[

The exact files and lines, with the PHP version that changed each one.

## FAQ

### Does scanning slow down my site?

The scan runs only while you or WP-Cron ask for it, a few seconds at a time, and
reads files without running them. Visitors are not affected. A typical site with
20 plugins takes a few minutes.

### Does it send my code anywhere?

No. All analysis happens on your server and no code leaves it. The plugin talks 
to WordPress.org only, the same way WordPress’s own update checks do: for a plugin
or theme with errors it asks the WordPress.org directory whether that project is
closed and when it was last updated (the request names the plugin or theme), and,
when “Also check available updates” is on, it downloads the update WordPress already
found for it. Like every request WordPress makes, these carry WordPress’s standard
user agent with your site address.

### Why does it say a problem “already applies” to my PHP?

If the site runs PHP 8.3 today and a plugin still calls a function removed in PHP
8.0, that line never runs on your site, or the site would already be broken. Such
findings are not counted for the target version and are hidden by default.

### Why is a line marked “behind a check that is false”?

The line sits behind a PHP version check or `function_exists()` that cannot be true
on the target version, for example `if ( PHP_VERSION_ID < 80000 )` when you check
PHP 8.4. It runs only on older PHP, so it does not count against the plugin. Such
lines are hidden by default; tick the box under the plugin’s lines to show them.

### My host disables exec(). Will it work?

Yes. The scanner runs PHP_CodeSniffer inside the WordPress request and needs only
the standard tokenizer extension. The bundled libraries make no calls to exec(),
shell_exec() or proc_open(): the few command-line code paths of PHP_CodeSniffer 
that used them are removed when the libraries are bundled.

### Can I scan inactive plugins and themes?

Yes. Active ones are selected by default; use “Select all” to include the rest.

### Who can use it?

Administrators. On multisite, network administrators only, because plugins and themes
are shared by the whole network.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Leaplens – Upgrade Advisor for PHP” adalah perisian sumber terbuka. Orang-orang
berikut telah menyumbang kepada pemalam ini.

Penyumbang

 *   [ maksymkotenko ](https://profiles.wordpress.org/maksymkotenko/)

[Translate “Leaplens – Upgrade Advisor for PHP” into your language.](https://translate.wordpress.org/projects/wp-plugins/leaplens)

### Berminat dalam pembangunan?

[Layari kod](https://plugins.trac.wordpress.org/browser/leaplens/), periksa [repositori SVN](https://plugins.svn.wordpress.org/leaplens/),
atau langgani [log pembangunan](https://plugins.trac.wordpress.org/log/leaplens/)
dengan [RSS](https://plugins.trac.wordpress.org/log/leaplens/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.2.0

 * Code behind a PHP version check, `function_exists()` or `defined()` that is false
   on the target PHP is no longer counted as an error or deprecation: fewer false“
   Fix needed” verdicts for plugins that keep old code for old PHP. Those lines 
   stay one click away.

#### 0.1.0

 * First release: PHP 7.4 to 8.5, verdicts per plugin and theme, update checks, 
   background scanning, Plugins screen notes.

## Meta

 *  Version **0.2.0**
 *  Last updated **5 hari lalu**
 *  Active installations **Kurang dari 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/leaplens/)
 * Tags
 * [compatibility checker](https://ms.wordpress.org/plugins/tags/compatibility-checker/)
   [php 8.5](https://ms.wordpress.org/plugins/tags/php-8-5/)[php compatibility](https://ms.wordpress.org/plugins/tags/php-compatibility/)
   [php upgrade](https://ms.wordpress.org/plugins/tags/php-upgrade/)[php version](https://ms.wordpress.org/plugins/tags/php-version/)
 *  [Paparan Lanjutan](https://ms.wordpress.org/plugins/leaplens/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/leaplens/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/leaplens/reviews/)

## Penyumbang

 *   [ maksymkotenko ](https://profiles.wordpress.org/maksymkotenko/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/leaplens/)