{"id":375213,"date":"2026-09-28T09:53:39","date_gmt":"2026-09-28T09:53:39","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/compatnav-php-upgrade-checker\/"},"modified":"2026-10-27T07:42:08","modified_gmt":"2026-10-27T07:42:08","slug":"compatnav-php-upgrade-checker","status":"publish","type":"plugin","link":"https:\/\/dsb.wordpress.org\/plugins\/compatnav-php-upgrade-checker\/","author":23573234,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.0","stable_tag":"1.3.0","tested":"7.1.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"CompatNav \u2013 PHP Upgrade Checker","header_author":"","header_description":"Checks your plugins and themes for code that will break or show deprecation notices when you upgrade PHP. Runs 100% on your own server.","assets_banners_color":"789cb6","last_updated":"2026-10-27 07:42:08","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":200,"downloads":902,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"mouadwp","date":"2026-09-28 17:02:47","revision":3717638},"1.1.0":{"tag":"1.1.0","author":"mouadwp","date":"2026-09-29 23:20:33","revision":3720006},"1.2.0":{"tag":"1.2.0","author":"mouadwp","date":"2026-10-03 10:36:57","revision":3726107},"1.2.1":{"tag":"1.2.1","author":"mouadwp","date":"2026-10-26 09:22:52","revision":3765955},"1.3.0":{"tag":"1.3.0","author":"mouadwp","date":"2026-10-27 07:42:08","revision":3767953}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3716795,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3716795,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3716795,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3716795,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.1.0","1.2.0","1.2.1","1.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3767953,"resolution":"1","location":"assets","locale":"","width":1280,"height":849},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3767953,"resolution":"2","location":"assets","locale":"","width":1280,"height":864},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3767953,"resolution":"3","location":"assets","locale":"","width":1280,"height":459},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3767953,"resolution":"4","location":"assets","locale":"","width":1280,"height":1559},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3767953,"resolution":"5","location":"assets","locale":"","width":1280,"height":623}},"screenshots":{"1":"The verdict when nothing active will break, how far you can upgrade, and the support status of your PHP version.","2":"The verdict when something needs attention, with the \"What to do first\" list and how far you can upgrade until then.","3":"One plugin opened: the recommended next step, each issue in plain words, and the details for developers.","4":"The downloadable HTML report.","5":"CompatNav in WordPress's Site Health, read from the last scan."}},"plugin_section":[],"plugin_tags":[3005,662,258141,35037,5939],"plugin_category":[],"plugin_contributors":[283151],"plugin_business_model":[],"class_list":["post-375213","plugin","type-plugin","status-publish","hentry","plugin_tags-compatibility","plugin_tags-php","plugin_tags-php-compatibility","plugin_tags-php-version","plugin_tags-upgrade","plugin_contributors-mouadwp","plugin_committers-mouadwp"],"banners":{"banner":"https:\/\/ps.w.org\/compatnav-php-upgrade-checker\/assets\/banner-772x250.png?rev=3716795","banner_2x":"https:\/\/ps.w.org\/compatnav-php-upgrade-checker\/assets\/banner-1544x500.png?rev=3716795","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/compatnav-php-upgrade-checker\/assets\/icon-128x128.png?rev=3716795","icon_2x":"https:\/\/ps.w.org\/compatnav-php-upgrade-checker\/assets\/icon-256x256.png?rev=3716795","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/compatnav-php-upgrade-checker\/assets\/screenshot-1.png?rev=3767953","caption":"The verdict when nothing active will break, how far you can upgrade, and the support status of your PHP version."},{"src":"https:\/\/ps.w.org\/compatnav-php-upgrade-checker\/assets\/screenshot-2.png?rev=3767953","caption":"The verdict when something needs attention, with the \"What to do first\" list and how far you can upgrade until then."},{"src":"https:\/\/ps.w.org\/compatnav-php-upgrade-checker\/assets\/screenshot-3.png?rev=3767953","caption":"One plugin opened: the recommended next step, each issue in plain words, and the details for developers."},{"src":"https:\/\/ps.w.org\/compatnav-php-upgrade-checker\/assets\/screenshot-4.png?rev=3767953","caption":"The downloadable HTML report."},{"src":"https:\/\/ps.w.org\/compatnav-php-upgrade-checker\/assets\/screenshot-5.png?rev=3767953","caption":"CompatNav in WordPress's Site Health, read from the last scan."}],"raw_content":"<!--section=description-->\n<p>CompatNav is a PHP compatibility checker for your site. Before you or your host move it to a newer PHP version, CompatNav reads the code of every installed plugin and theme and tells you, in plain words, what will break and what will only show deprecation notices.<\/p>\n\n<p>Documentation and guides: <a href=\"https:\/\/compatnav.com\">compatnav.com<\/a><\/p>\n\n<h4>What you get<\/h4>\n\n<ul>\n<li><strong>One clear answer.<\/strong> \"Safe to upgrade to PHP 8.5\", or \"Not ready yet\" with a short \"What to do first\" list.<\/li>\n<li><strong>How far you can upgrade.<\/strong> For each PHP version up to the one you chose: what will break and how many deprecation notices come up, and the highest version with nothing found that will break. All from one scan.<\/li>\n<li><strong>Your PHP version's support status.<\/strong> Whether the PHP version your site runs still gets official fixes, and until when (dates from php.net, bundled with the plugin). Before your first scan, CompatNav suggests a target that keeps getting security fixes for at least a year.<\/li>\n<li><strong>Checks for PHP 8.0 to 8.5.<\/strong> 58 checks for the changes each PHP version brings, from removed functions to new deprecations. You choose the version you plan to move to.<\/li>\n<li><strong>Only what changes for your site.<\/strong> CompatNav compares the PHP version your site runs today with the one you choose, and reports only what changes between the two.<\/li>\n<li><strong>Few, meaningful results.<\/strong> Each check looks for exact code patterns, and code that is already protected (by a PHP version check or <code>function_exists()<\/code>) is not reported. On three of the most-installed plugins (about 7,800 PHP files together), it reports 27 items for an upgrade from PHP 7.4 to 8.5 (tested in September 2026), all of them deprecation notices, each checked by hand.<\/li>\n<li><strong>Next steps you can act on.<\/strong> For each plugin and theme: whether an update is available, whether the code looks like your own, a plain explanation of each issue, and a before\/after example for whoever maintains the code.<\/li>\n<li><strong>Reports to share.<\/strong> Download a self-contained HTML report (opens in any browser, can be printed to PDF) or a CSV file, or copy a plain-text summary for your developer or host (no site name or address in it; also as a .txt file).<\/li>\n<li><strong>In Site Health too.<\/strong> WordPress's Site Health shows whether the last scan found something that will break. It reads the stored report and never starts a scan.<\/li>\n<li><strong>Built not to hang.<\/strong> The scan runs in short background steps with a progress bar, and you can pause, resume or cancel it. A file too heavy for your server's memory is skipped and listed, and the scan continues. On a test site with 17 plugins and themes (8,374 PHP files), a full scan took about 70 seconds.<\/li>\n<\/ul>\n\n<h4>Private by design<\/h4>\n\n<ul>\n<li>The scan runs entirely on your own server. No code, file names or results are sent anywhere, and CompatNav makes no external requests.<\/li>\n<li>It only reads files. It never runs or changes the code it checks.<\/li>\n<li>It stores only scan results (file paths, line numbers, check IDs), never personal data.<\/li>\n<\/ul>\n\n<h4>Honest about its limits<\/h4>\n\n<p>CompatNav reads code; it does not run it. Some problems only appear when code runs with real data, and no code reader can see those. Files that could not be checked are listed with the reason, and while any active file could not be checked, the verdict never says \"Safe to upgrade\".<\/p>\n\n<h4>Documentation and guides<\/h4>\n\n<p>The <a href=\"https:\/\/compatnav.com\">CompatNav website<\/a> explains how to read the report and what to do when a plugin isn't ready yet, with plain guides to PHP upgrades: PHP 8.2's end of life, what changes in PHP 8.4 and 8.5, and how to fix a critical error after a PHP update.<\/p>\n\n<h4>Libraries<\/h4>\n\n<p>CompatNav includes <a href=\"https:\/\/github.com\/nikic\/PHP-Parser\">PHP-Parser<\/a> by Nikita Popov (BSD 3-Clause license), copied under CompatNav's own namespace so it can never clash with another plugin's copy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>In your WordPress admin, go to Plugins \u2192 Add New Plugin and search for \"CompatNav\", or upload the zip file.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to Tools \u2192 CompatNav. Next to \"Check readiness for\", choose the PHP version you plan to upgrade to, then click \"Start scan\".<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20compatnav%20change%20my%20code%3F\"><h3>Does CompatNav change my code?<\/h3><\/dt>\n<dd><p>No. It only reads the files of your plugins and themes. It never changes them, never runs them, and never applies fixes. The report explains each issue and shows a before\/after example for whoever maintains the code.<\/p><\/dd>\n<dt id=\"does%20any%20data%20leave%20my%20site%3F\"><h3>Does any data leave my site?<\/h3><\/dt>\n<dd><p>No. The scan and the report are made entirely on your own server, and CompatNav makes no external requests. The \"update available\" information comes from WordPress's own update check, which is already stored on your site.<\/p><\/dd>\n<dt id=\"does%20compatnav%20protect%20my%20site%20from%20php2shell%20or%20other%20php%20vulnerabilities%3F\"><h3>Does CompatNav protect my site from PHP2Shell or other PHP vulnerabilities?<\/h3><\/dt>\n<dd><p>No. Security fixes for PHP come from updating PHP itself on your server, which your host does (or you, if you manage the server). CompatNav helps you upgrade PHP safely: it shows which plugins and themes may break on the newer version, so you can update or replace them before the move.<\/p><\/dd>\n<dt id=\"my%20site%20is%20on%20php%207.4%2C%208.0%20or%208.1.%20what%20should%20i%20do%3F\"><h3>My site is on PHP 7.4, 8.0 or 8.1. What should I do?<\/h3><\/dt>\n<dd><p>These versions get no official PHP releases any more, security fixes included. Ask your host whether they patch these versions themselves, and plan an upgrade to a supported version. PHP 8.2 gets security fixes only until 31 December 2026, so PHP 8.3 or newer gives you more time. Run CompatNav first to see what needs attention before the move. The PHP project lists its supported versions and their dates on <a href=\"https:\/\/www.php.net\/supported-versions.php\">php.net<\/a>.<\/p><\/dd>\n<dt id=\"do%20i%20need%20compatnav%20to%20install%20a%20patch%20update%20%28e.g.%208.3.x%20%E2%86%92%208.3.36%29%3F\"><h3>Do I need CompatNav to install a patch update (e.g. 8.3.x \u2192 8.3.36)?<\/h3><\/dt>\n<dd><p>Usually not. Patch updates within the same version (for example from 8.3.30 to 8.3.36) fix bugs and security issues and don't remove features, so plugins and themes normally keep working as before. CompatNav is for moving to a newer version, for example from PHP 8.1 to 8.3.<\/p><\/dd>\n<dt id=\"why%20so%20few%20results%3F\"><h3>Why so few results?<\/h3><\/dt>\n<dd><p>CompatNav reports only what changes when you move from your current PHP version to the one you chose, and only exact patterns, so it does not flag code that is fine. Code that already protects itself with a version check is not reported either. Well-maintained plugins often have nothing to report. The report always shows how many files were checked, so few results means good news, not a skipped scan.<\/p><\/dd>\n<dt id=\"what%20about%20files%20that%20could%20not%20be%20checked%3F\"><h3>What about files that could not be checked?<\/h3><\/dt>\n<dd><p>They are listed in the report with the reason, for example a file that already contains a syntax error, or one that is too large or too complex for your server's memory. Such a file may hide a problem, so while any active file could not be checked, the verdict says \"Nothing found that will break\" together with the number of files that could not be checked, never \"Safe to upgrade\".<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20multisite%3F\"><h3>Does it work on multisite?<\/h3><\/dt>\n<dd><p>Yes. On a multisite network only super admins can use CompatNav, because plugins, themes and the PHP version are shared by the whole network. The report is made per site, and \"active\" means active on that site.<\/p><\/dd>\n<dt id=\"for%20developers%3A%20can%20other%20plugins%20use%20compatnav%3F\"><h3>For developers: can other plugins use CompatNav?<\/h3><\/dt>\n<dd><p>Yes. Since version 1.1.0, CompatNav has a small PHP API for add-ons: start a scan from a background task (WP-Cron or WP-CLI), run it in steps, read the report and its findings, and react when a scan finishes. Since 1.2.0 it can also check a piece of code, or a plugin or theme zip file without unpacking or installing it. It works on your own server like the rest of CompatNav: no HTTP endpoints and no external requests. Documentation: <a href=\"https:\/\/compatnav.com\/docs\/api\/\">compatnav.com\/docs\/api<\/a>.<\/p><\/dd>\n<dt id=\"which%20php%20versions%20does%20it%20support%3F\"><h3>Which PHP versions does it support?<\/h3><\/dt>\n<dd><p>It checks upgrades to PHP 8.0, 8.1, 8.2, 8.3, 8.4 and 8.5. CompatNav itself needs PHP 7.4 or newer and WordPress 6.0 or newer. If your site still runs PHP 7.2 or 7.3, ask your host to move it to PHP 7.4 first (current WordPress needs PHP 7.4 too), then use CompatNav to prepare the move to PHP 8.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>New: \"How far can you upgrade?\" For each PHP version up to the one you chose, what will break and how many deprecation notices come up, and the highest version with nothing found that will break. From the same scan, nothing extra to run.<\/li>\n<li>New: the PHP version your site runs and its official support status (active support, security fixes only, or no longer supported), from dates bundled with the plugin.<\/li>\n<li>New: before your first scan, the version picker suggests a PHP version that still gets security fixes for at least a year. You can still choose any version.<\/li>\n<li>New: \"Copy for your developer or host\": a plain-text summary of the report to paste into an email or a support ticket, or to download as a .txt file. No site name or address is included.<\/li>\n<li>New: a line in WordPress's Site Health (Tools \u2192 Site Health) and a CompatNav section on its Info tab. They read the last report and never start a scan.<\/li>\n<li>New: a \"Run a scan\" link on CompatNav's row of the Plugins screen.<\/li>\n<li>The checks, the scan and its results are the same as in 1.2.1.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>After a completed scan, the bottom of the report has one short line with links to the support forum and to the review form on wordpress.org.<\/li>\n<li>The description and FAQ now answer common questions about PHP security updates and PHP versions that no longer get official releases.<\/li>\n<li>Nothing else changes: the scan, its results and the downloadable reports are the same as in 1.2.0.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Nothing changes in how you use CompatNav: the screen, the scan and the reports work as before.<\/li>\n<li>While a scan that was not started from the CompatNav screen is running (for example a scheduled scan), the progress box says who started it and that it continues in the background.<\/li>\n<li>\"Started by\" can now name the add-on that started a scan, e.g. \"Started by: scheduled scan (name of the add-on)\".<\/li>\n<li>Developer API 1.1 (see the FAQ): check a piece of code, check a plugin or theme zip file without unpacking it (kept apart from your report), list the report's files, and let an add-on show its own tab on the CompatNav screen. Without such an add-on, the screen has no tabs.<\/li>\n<li>More accurate PHP 8.2 check for \"self::\u2026\" and \"parent::\u2026\" callbacks: it now reports them only where PHP itself calls them (for example array_map() or call_user_func()), not every text that merely looks like one.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Nothing changes in how you use CompatNav: the screen, the scan and the reports work as before.<\/li>\n<li>When a scan was not started from the CompatNav screen (for example by a scheduled task or a command-line tool), the report now says so, e.g. \"Started by: scheduled scan\". Scans started from the screen show nothing new.<\/li>\n<li>The downloadable report's section for developers now says how the scan ran: the PHP version it compared against, and the server's memory and time limits.<\/li>\n<li>Adds a developer API for add-ons (see the FAQ).<\/li>\n<li>Sturdier background scans: an unexpected error while reading one file no longer holds up the scan, and scans started from different places never mix up their progress.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"PHP compatibility check before you upgrade: scans every plugin and theme locally and shows what will break on PHP 8.0\u20138.5.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/375213","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=375213"}],"author":[{"embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/mouadwp"}],"wp:attachment":[{"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=375213"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=375213"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=375213"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=375213"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=375213"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=375213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}