{"id":1411,"date":"2026-10-08T12:25:21","date_gmt":"2026-10-08T12:25:21","guid":{"rendered":"https:\/\/www.ahosting.net\/blog\/?p=1411"},"modified":"2026-10-09T11:01:44","modified_gmt":"2026-10-09T11:01:44","slug":"opcode-cache-is-not-enabled","status":"publish","type":"post","link":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/","title":{"rendered":"Opcode Cache Is Not Enabled? What WordPress 7 Actually Checks"},"content":{"rendered":"\n<script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"FAQPage\", \"mainEntity\": [{\"@type\": \"Question\", \"name\": \"How do I fix WordPress OPcache not enabled in PHP?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"First and foremost, find out whether OPcache is really off. Open Tools, Site Health, Info, Server and read the Opcode cache row. Disabled by configuration usually means OPcache is running and your host restricts its status function, so there is nothing to fix. Disabled means it is off: try another PHP version in cPanel MultiPHP Manager, remove any line that switches it off, or ask your host.\"}}, {\"@type\": \"Question\", \"name\": \"What does opcode cache is not enabled mean in WordPress Site Health in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In other words, one PHP function did not confirm that the cache is on. WordPress 7.0 added the test, and in 7.1 it passes only when opcache_get_status returns a report saying OPcache is enabled. Any other answer, including no answer at all, gives the warning. It is graded recommended under the Performance badge, so your site keeps working either way.\"}}, {\"@type\": \"Question\", \"name\": \"Opcode cache is not enabled vs Disabled by configuration: what is the difference?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Specifically, the first is the Status label and the second is one of the values Site Health shows for the Opcode cache row on its Info tab. The Status label appears for every cause. The Info value narrows it down: Disabled means the cache is off, while Disabled by configuration means the status function refused to answer, which on shared hosting usually means the cache is running.\"}}, {\"@type\": \"Question\", \"name\": \"Why does Site Health say opcode cache is not enabled when phpinfo shows OPcache running?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Typically because your host restricts which scripts may call the OPcache status function. PHP then returns false with a warning, and WordPress reads false as off. The cache keeps working for every page. WordPress Trac ticket 65395 reports exactly this on shared hosting, and a proposed patch would fall back to the opcache.enable setting, but it is not part of WordPress 7.1.3.\"}}, {\"@type\": \"Question\", \"name\": \"Can I fix opcode cache is not enabled with .user.ini on shared hosting?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In fact, no. PHP accepts opcache.enable set to 1 only when PHP starts, so the same line in .user.ini is refused with a warning. The memory and file-count settings often suggested alongside it are system-level and ignored there too. What .user.ini can do is switch OPcache off for your site, so check that yours does not contain opcache.enable set to 0.\"}}, {\"@type\": \"Question\", \"name\": \"Is it safe to hide the opcode cache is not enabled test in Site Health?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Indeed it is, once you have confirmed that OPcache is running. Removing the test with the site_status_tests filter changes only what Site Health reports, not how PHP behaves. Do it in a small must-use plugin rather than a theme, and remove it again when WordPress ships a fix, because a hidden test cannot warn you if the cache is ever switched off for real.\"}}, {\"@type\": \"Question\", \"name\": \"PHP 8.4 vs PHP 8.5: does PHP 8.5 turn on OPcache automatically in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In practice, only partly. On PHP 8.4 and older, OPcache is an extension a host may or may not load. On PHP 8.5 it is built into PHP and always loaded, but the opcache.enable switch is still honored, so a host can still switch it off, and a restricted status function still gives the same false warning. Check the Info tab after switching versions.\"}}, {\"@type\": \"Question\", \"name\": \"How do I check opcode cache is not enabled on AHosting shared hosting in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Above all, check through the website, not over SSH. Read the Opcode cache row in Site Health Info, then load the three-value test file from this guide in a browser and delete it afterward. On our servers PHP runs as your own cPanel user through LiteSpeed, which OPcache supports, so the test file sees exactly what your site sees.\"}}, {\"@type\": \"Question\", \"name\": \"Can AHosting support check why my site says opcode cache is not enabled?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Notably, a Disabled by configuration result with opcache.enable on needs no ticket, because the cache is working. If the Info tab says Disabled and switching PHP versions in MultiPHP Manager does not change it, open a ticket with that row and the PHP version you run, and we will look at it with you.\"}}, {\"@type\": \"Question\", \"name\": \"Do I need an AHosting VPS to control OPcache settings in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Fortunately not to clear this warning. On a shared plan the cache size, the status-function restriction and the master switch are set for the whole server. A VPS makes sense when you want to choose those yourself, for example to give a large WooCommerce store more OPcache memory or to watch hit rates in Site Health.\"}}]}<\/script>\n\n\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-opcode-cache-is-not-enabled-actually-checks\">What \u201cOpcode Cache Is Not Enabled\u201d Actually Checks<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-an-opcode-cache-does\">What an Opcode Cache Does<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-one-function-call-behind-opcode-cache-is-not-enabled\">One Function Call Behind Opcode Cache Is Not Enabled<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-three-causes-of-opcode-cache-is-not-enabled-and-only-two-mean-it-is-off\">Three Causes of Opcode Cache Is Not Enabled, and Only Two Mean It Is Off<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-shared-hosting-false-alarm\">The Shared Hosting False Alarm<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-disabled-by-configuration-reading-the-info-tab\">\u201cDisabled by Configuration\u201d: Reading the Info Tab<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-why-the-memory-and-hit-rate-rows-disappear\">Why the Memory and Hit-Rate Rows Disappear<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-why-user-ini-cannot-fix-opcode-cache-is-not-enabled\">Why .user.ini Cannot Fix Opcode Cache Is Not Enabled<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-line-that-can-switch-opcode-cache-off\">The Line That Can Switch Opcode Cache Off<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-check-opcode-cache-is-not-enabled-yourself-in-two-minutes\">Check Opcode Cache Is Not Enabled Yourself in Two Minutes<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-the-three-values-mean\">What the Three Values Mean<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-why-ssh-and-wp-cli-say-opcode-cache-is-not-enabled\">Why SSH and WP-CLI Say Opcode Cache Is Not Enabled<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-decode-your-opcode-cache-is-not-enabled-result\">Decode Your Opcode Cache Is Not Enabled Result<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-how-to-fix-opcode-cache-is-not-enabled-in-order\">How to Fix Opcode Cache Is Not Enabled, in Order<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-opcode-cache-is-not-enabled-is-not-the-other-cache-warnings\">Opcode Cache Is Not Enabled Is Not the Other Cache Warnings<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-opcode-cache-is-not-enabled-on-ahosting-servers\">Opcode Cache Is Not Enabled on AHosting Servers<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-where-opcache-sits-next-to-litespeed-cache\">Where OPcache Sits Next to LiteSpeed Cache<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-when-to-open-a-ticket\">When to Open a Ticket<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-a-practical-checklist-for-opcode-cache-is-not-enabled\">A Practical Checklist for Opcode Cache Is Not Enabled<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-opcode-cache-is-not-enabled\">Frequently Asked Questions: Opcode Cache Is Not Enabled<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#faq-how-do-i-fix-wordpress-opcache-not-enabled-in-php\">How do I fix WordPress OPcache not enabled in PHP?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-what-does-opcode-cache-is-not-enabled-mean-in-wordpress-site-health-in-2026\">What does opcode cache is not enabled mean in WordPress Site Health in 2026?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-opcode-cache-is-not-enabled-vs-disabled-by-configuration-what-is-the-difference\">Opcode cache is not enabled vs Disabled by configuration: what is the difference?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-why-does-site-health-say-opcode-cache-is-not-enabled-when-phpinfo-shows-opcache-running\">Why does Site Health say opcode cache is not enabled when phpinfo shows OPcache running?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-can-i-fix-opcode-cache-is-not-enabled-with-user-ini-on-shared-hosting\">Can I fix opcode cache is not enabled with .user.ini on shared hosting?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-is-it-safe-to-hide-the-opcode-cache-is-not-enabled-test-in-site-health\">Is it safe to hide the opcode cache is not enabled test in Site Health?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-php-8-4-vs-php-8-5-does-php-8-5-turn-on-opcache-automatically-in-2026\">PHP 8.4 vs PHP 8.5: does PHP 8.5 turn on OPcache automatically in 2026?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-how-do-i-check-opcode-cache-is-not-enabled-on-ahosting-shared-hosting-in-2026\">How do I check opcode cache is not enabled on AHosting shared hosting in 2026?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-can-ahosting-support-check-why-my-site-says-opcode-cache-is-not-enabled\">Can AHosting support check why my site says opcode cache is not enabled?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-do-i-need-an-ahosting-vps-to-control-opcache-settings-in-2026\">Do I need an AHosting VPS to control OPcache settings in 2026?<\/a><\/li><\/ul><\/li><\/ul><\/div>\n\n\n<div class=\"ah-tldr\">\n  <span class=\"ah-tldr-badge\">TL;DR<\/span>\n  <p>Opcode cache is not enabled means one PHP function, opcache_get_status, did not confirm that OPcache is on. That happens when the cache really is off, and also when it is running but your host restricts the function. Open Site Health, Info, Server first. Disabled by configuration usually means the cache works and there is nothing to fix. Disabled means it is off, and only a PHP version change or your host can turn it on, because PHP refuses to switch it on from .user.ini.<\/p>\n<\/div>\n\n\n\n<h2 id=\"aioseo-what-opcode-cache-is-not-enabled-actually-checks\" class=\"wp-block-heading\">What \u201cOpcode Cache Is Not Enabled\u201d Actually Checks<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Opcode cache is not enabled<\/em> is the Site Health warning many site owners first met after updating to WordPress 7.0, on a server nobody had touched. It reads as if the host had switched off a performance feature. Read against the WordPress 7.1.3 code that writes it, the message is narrower than that: one PHP function did not confirm that the cache is on, and the reason is not always that it is off.<\/p>\n\n\n\n<figure class=\"wp-block-audio\"><audio preload=\"none\" controls src=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/PODCAST-opcode-cache-is-not-enabled.m4a\"><\/audio><figcaption class=\"wp-element-caption\">Listen: the warning comes from one PHP function call, and on shared hosting it often fires while OPcache is still running. By Matt Chrust, Director of Business Development, AHosting.<\/figcaption><\/figure>\n\n\n\n<h3 id=\"aioseo-what-an-opcode-cache-does\" class=\"wp-block-heading\">What an Opcode Cache Does<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">PHP does not run your theme and plugin files as written. It first compiles each file into opcodes, the small instructions its virtual machine executes; Nikita Popov\u2019s <a href=\"https:\/\/www.npopov.com\/2017\/04\/14\/PHP-7-Virtual-machine.html\" target=\"_blank\" rel=\"noopener\">walkthrough of the PHP 7 virtual machine<\/a> shows what they look like. OPcache keeps those compiled opcodes in shared memory, so a file is compiled once and reused on later requests instead of being compiled again on every page load. A WordPress page touches hundreds of PHP files, which is why PHP\u2019s own developers describe running a production site without OPcache as a mistake.<\/p>\n\n\n\n<h3 id=\"aioseo-one-function-call-behind-opcode-cache-is-not-enabled\" class=\"wp-block-heading\">One Function Call Behind Opcode Cache Is Not Enabled<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The test, listed in Site Health as <em>Opcode cache<\/em>, arrived in WordPress 7.0 and runs each time the Site Health screen loads. It calls <a href=\"https:\/\/www.php.net\/manual\/en\/function.opcache-get-status.php\" target=\"_blank\" rel=\"noopener\">opcache_get_status()<\/a> and passes only when that function returns a report whose <code>opcache_enabled<\/code> value is true. Any other answer gives opcode cache is not enabled, graded recommended under the Performance badge. Nothing on the site breaks. When the cache really is off, PHP files are simply compiled again on every request.<\/p>\n\n\n\n<h2 id=\"aioseo-three-causes-of-opcode-cache-is-not-enabled-and-only-two-mean-it-is-off\" class=\"wp-block-heading\">Three Causes of Opcode Cache Is Not Enabled, and Only Two Mean It Is Off<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The status function can fail to confirm the cache in three different ways, and WordPress treats all three the same. Two of them mean the cache is genuinely off. The third is the one shared-hosting customers keep reporting, and in that case the cache is working normally.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Extension not loaded.<\/strong> On PHP 8.4 and older, OPcache is an optional extension. If the PHP version your site runs does not load it, the status function does not exist at all.<\/li>\n\n\n\n<li><strong>Switched off.<\/strong> OPcache is loaded, but <code>opcache.enable<\/code> is off, either for the whole server or for your site. Here the function does answer, and its answer says the cache is off.<\/li>\n\n\n\n<li><strong>API restricted.<\/strong> Your host sets <code>opcache.restrict_api<\/code> to a folder outside your account, so that one customer cannot read or reset the shared cache. PHP then refuses the call with a warning and returns false, while the cache keeps serving every page.<\/li>\n<\/ul>\n\n\n\n<h3 id=\"aioseo-the-shared-hosting-false-alarm\" class=\"wp-block-heading\">The Shared Hosting False Alarm<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The third case is WordPress Trac ticket <a href=\"https:\/\/core.trac.wordpress.org\/ticket\/65395\" target=\"_blank\" rel=\"noopener\">#65395<\/a>, titled as a false report of opcode cache is not enabled on shared hosting. Reporters on two different hosts posted phpinfo output showing OPcache up and running beside the warning. A patch proposes falling back to the <code>opcache.enable<\/code> setting when the status function is blocked. It is still awaiting review, and in WordPress 7.1.3 the check is unchanged. WordPress already knows about the restriction elsewhere: its own routine for clearing the cache after an update checks it before calling the API. The new Site Health test does not.<\/p>\n\n\n\n<div class=\"ah-infographic\">\n  <svg viewBox=\"0 0 720 420\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"Decision diagram for the opcode cache is not enabled warning. The same Site Health warning leads to three values in the Info tab: Enabled, Disabled, and Disabled by configuration, and only Disabled reliably means OPcache is off.\">\n    <title>One warning, three Info values<\/title>\n    <desc>At the top, the Site Health warning Opcode cache is not enabled. Below it, three branches for the Opcode cache row under Info, Server. Enabled, with memory and hit-rate rows beneath it: the cache is running and the warning should not appear. Disabled: either the OPcache extension is not loaded or the opcache.enable switch is off, so the cache is off and a PHP version change or the host can turn it on. Disabled by configuration: the status function returned false, which on shared hosting usually means the host restricts the OPcache API while the cache keeps running, and less often that OPcache failed to start. A footer notes that a .user.ini file can switch OPcache off but never on.<\/desc>\n    <rect x=\"0\" y=\"0\" width=\"720\" height=\"420\" fill=\"#0f172a\"\/>\n    <text x=\"32\" y=\"40\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"19\" font-weight=\"700\">One warning. Three Info values. One real fault.<\/text>\n    <text x=\"32\" y=\"63\" fill=\"#eef3ff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"13\">WordPress 7.1.3, Tools, Site Health, Info, Server, the Opcode cache row.<\/text>\n    <rect x=\"200\" y=\"84\" width=\"320\" height=\"44\" fill=\"#1e293b\" stroke=\"#2563eb\" stroke-width=\"2\"\/>\n    <text x=\"360\" y=\"112\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"15\" font-weight=\"700\" text-anchor=\"middle\">Opcode cache is not enabled<\/text>\n    <line x1=\"360\" y1=\"128\" x2=\"130\" y2=\"168\" stroke=\"#334155\" stroke-width=\"2\"\/>\n    <line x1=\"360\" y1=\"128\" x2=\"360\" y2=\"168\" stroke=\"#334155\" stroke-width=\"2\"\/>\n    <line x1=\"360\" y1=\"128\" x2=\"590\" y2=\"168\" stroke=\"#334155\" stroke-width=\"2\"\/>\n    <rect x=\"32\" y=\"168\" width=\"196\" height=\"196\" fill=\"#1e293b\" stroke=\"#22c55e\" stroke-width=\"2\"\/>\n    <text x=\"46\" y=\"194\" fill=\"#86efac\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"15\" font-weight=\"700\">Enabled<\/text>\n    <text x=\"46\" y=\"222\" fill=\"#eef3ff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">Memory and hit-rate<\/text>\n    <text x=\"46\" y=\"239\" fill=\"#eef3ff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">rows appear below it.<\/text>\n    <text x=\"46\" y=\"272\" fill=\"#94a3b8\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">Cache running.<\/text>\n    <text x=\"46\" y=\"289\" fill=\"#94a3b8\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">No warning to fix.<\/text>\n    <rect x=\"262\" y=\"168\" width=\"196\" height=\"196\" fill=\"#1e293b\" stroke=\"#ef4444\" stroke-width=\"2\"\/>\n    <text x=\"276\" y=\"194\" fill=\"#fca5a5\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"15\" font-weight=\"700\">Disabled<\/text>\n    <text x=\"276\" y=\"222\" fill=\"#eef3ff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">Extension not loaded,<\/text>\n    <text x=\"276\" y=\"239\" fill=\"#eef3ff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">or switched off.<\/text>\n    <text x=\"276\" y=\"272\" fill=\"#94a3b8\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">Cache off. A PHP<\/text>\n    <text x=\"276\" y=\"289\" fill=\"#94a3b8\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">version change or your<\/text>\n    <text x=\"276\" y=\"306\" fill=\"#94a3b8\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">host turns it on.<\/text>\n    <rect x=\"492\" y=\"168\" width=\"196\" height=\"196\" fill=\"#1e293b\" stroke=\"#f59e0b\" stroke-width=\"2\"\/>\n    <text x=\"506\" y=\"194\" fill=\"#fcd34d\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"14\" font-weight=\"700\">Disabled by<\/text>\n    <text x=\"506\" y=\"212\" fill=\"#fcd34d\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"14\" font-weight=\"700\">configuration<\/text>\n    <text x=\"506\" y=\"239\" fill=\"#eef3ff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">The status function<\/text>\n    <text x=\"506\" y=\"256\" fill=\"#eef3ff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">returned no answer.<\/text>\n    <text x=\"506\" y=\"289\" fill=\"#94a3b8\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">Usually: API restricted,<\/text>\n    <text x=\"506\" y=\"306\" fill=\"#94a3b8\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">cache running.<\/text>\n    <text x=\"506\" y=\"323\" fill=\"#94a3b8\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">Rarely: failed to start.<\/text>\n    <text x=\"32\" y=\"400\" fill=\"#94a3b8\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">A .user.ini line can switch OPcache off for your site. PHP refuses to switch it on from there.<\/text>\n  <\/svg>\n<\/div>\n\n\n\n<h2 id=\"aioseo-disabled-by-configuration-reading-the-info-tab\" class=\"wp-block-heading\">\u201cDisabled by Configuration\u201d: Reading the Info Tab<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The Status tab shows the same label for every cause. The Info tab does not. Open <strong>Tools<\/strong>, <strong>Site Health<\/strong>, <strong>Info<\/strong>, expand <strong>Server<\/strong>, and find the <em>Opcode cache<\/em> row. WordPress fills it from the same function, but it reports how the function failed, which is what separates the false alarm from a real fault.<\/p>\n\n\n\n<figure class=\"wp-block-table ah-ladder\"><table><thead><tr><th>Opcode cache row in Info<\/th><th>What the status function returned<\/th><th>Is OPcache caching your site?<\/th><th>Who can change it<\/th><\/tr><\/thead><tbody><tr><td>Enabled, with memory and hit-rate rows below it<\/td><td>A report saying the cache is on<\/td><td>Yes<\/td><td>Nothing to change<\/td><\/tr><tr><td>Disabled<\/td><td>Nothing: the function does not exist because the extension is not loaded<\/td><td>No<\/td><td>A PHP version change, or the host<\/td><\/tr><tr><td>Disabled<\/td><td>A report saying the cache is off<\/td><td>No<\/td><td>Your .user.ini if it switches it off, otherwise the host<\/td><\/tr><tr><td>Disabled by configuration<\/td><td>False, because the host restricts the API<\/td><td>Yes<\/td><td>The host only; a WordPress fix is pending<\/td><\/tr><tr><td>Disabled by configuration<\/td><td>False, because OPcache failed to start<\/td><td>No<\/td><td>The host only<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">What the Opcode cache row in Site Health Info means \u2014 each value, what the status function returned, and whether OPcache is really running, read from WordPress 7.1.3 and PHP source.<\/figcaption><\/figure>\n\n\n\n<h3 id=\"aioseo-why-the-memory-and-hit-rate-rows-disappear\" class=\"wp-block-heading\">Why the Memory and Hit-Rate Rows Disappear<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When the cache reports itself enabled, WordPress adds rows for memory usage, interned strings usage, hit rate and whether the cache is full. When the status function is restricted, those numbers are exactly what the host chose to keep private, so the rows vanish and only <em>Disabled by configuration<\/em> remains. A missing hit-rate row is therefore not evidence that the cache is idle. It means WordPress was not allowed to ask.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"ah-yt\" data-id=\"ulS7pHrcPnI\" data-title=\"Opcode Cache Is Not Enabled in WordPress: What It Means (2026)\"><img src=\"https:\/\/i.ytimg.com\/vi\/ulS7pHrcPnI\/hqdefault.jpg\" alt=\"\" width=\"480\" height=\"360\" loading=\"lazy\" decoding=\"async\"><button type=\"button\" class=\"ah-yt-play\" aria-label=\"Play video: Opcode Cache Is Not Enabled in WordPress: What It Means (2026)\"><span aria-hidden=\"true\"><\/span><\/button><\/div>\n<\/div><\/figure>\n\n\n\n<h2 id=\"aioseo-why-user-ini-cannot-fix-opcode-cache-is-not-enabled\" class=\"wp-block-heading\">Why .user.ini Cannot Fix Opcode Cache Is Not Enabled<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The most common advice for this warning is a block of OPcache settings pasted into <code>.user.ini<\/code> or the cPanel MultiPHP INI Editor, starting with <code>opcache.enable=1<\/code>. PHP itself refuses most of it. The <a href=\"https:\/\/www.php.net\/manual\/en\/opcache.configuration.php\" target=\"_blank\" rel=\"noopener\">OPcache runtime configuration page<\/a> says the switch can only be disabled at runtime, never enabled, and PHP\u2019s source is blunter still: a true value is accepted only while PHP starts. A per-folder file is read later than that, so the line fails with a warning that OPcache cannot be temporarily enabled.<\/p>\n\n\n\n<figure class=\"wp-block-table ah-ladder\"><table><thead><tr><th>OPcache setting<\/th><th>Where PHP accepts it<\/th><th>From .user.ini on shared hosting<\/th><th>On a VPS<\/th><\/tr><\/thead><tbody><tr><td>opcache.enable<\/td><td>Anywhere, but only to switch off after startup<\/td><td>Off only, never on<\/td><td>Yes, in the PHP-wide ini<\/td><\/tr><tr><td>opcache.restrict_api<\/td><td>System level only<\/td><td>Ignored<\/td><td>Yes<\/td><\/tr><tr><td>opcache.enable_cli<\/td><td>System level only<\/td><td>Ignored<\/td><td>Yes<\/td><\/tr><tr><td>opcache.memory_consumption<\/td><td>System level only<\/td><td>Ignored<\/td><td>Yes<\/td><\/tr><tr><td>opcache.interned_strings_buffer<\/td><td>System level only<\/td><td>Ignored<\/td><td>Yes<\/td><\/tr><tr><td>opcache.max_accelerated_files<\/td><td>System level only<\/td><td>Ignored<\/td><td>Yes<\/td><\/tr><tr><td>opcache.validate_timestamps<\/td><td>Anywhere<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><tr><td>opcache.revalidate_freq<\/td><td>Anywhere<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Which OPcache settings you can change, and where \u2014 read from the OPcache module source for PHP 8.4.<\/figcaption><\/figure>\n\n\n\n<h3 id=\"aioseo-the-line-that-can-switch-opcode-cache-off\" class=\"wp-block-heading\">The Line That Can Switch Opcode Cache Off<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The same rule cuts the other way. A <code>.user.ini<\/code> line setting <code>opcache.enable<\/code> to 0 is accepted, and it switches the cache off for every request in that folder, so check for it before assuming the server is at fault. Our post on <a href=\"https:\/\/www.ahosting.net\/blog\/wordpress-memory-limit-not-working-shared-hosting\/\">why a WordPress memory limit change does not take<\/a> covers which PHP settings files are actually read, and the same files are the place to look here.<\/p>\n\n\n\n<h2 id=\"aioseo-check-opcode-cache-is-not-enabled-yourself-in-two-minutes\" class=\"wp-block-heading\">Check Opcode Cache Is Not Enabled Yourself in Two Minutes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The Info tab narrows it down. A three-value test file settles it, because it reads the switch directly instead of asking the status function. Create a file with a random name, such as <code>oc-check-7f3a.php<\/code>, in the folder your domain serves, containing one line: <code>&lt;?php var_dump(extension_loaded('Zend OPcache'), ini_get('opcache.enable'), ini_get('opcache.restrict_api'));<\/code>. Load it in a browser, note the three values, and delete it straight away.<\/p>\n\n\n\n<h3 id=\"aioseo-what-the-three-values-mean\" class=\"wp-block-heading\">What the Three Values Mean<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>true, 1, then a path<\/strong>: OPcache is loaded and on, and the path is the restriction. This is the false alarm. The cache is working.<\/li>\n\n\n\n<li><strong>true, 1, then an empty string<\/strong>: loaded, on and unrestricted, yet Site Health still warns. The cache most likely failed to start, which only the host can see.<\/li>\n\n\n\n<li><strong>true, then 0 or an empty string<\/strong>: loaded but switched off. Look for a line that switches it off before asking anyone.<\/li>\n\n\n\n<li><strong>false, false, false<\/strong>: the extension is not loaded for this PHP version.<\/li>\n<\/ul>\n\n\n\n<h3 id=\"aioseo-why-ssh-and-wp-cli-say-opcode-cache-is-not-enabled\" class=\"wp-block-heading\">Why SSH and WP-CLI Say Opcode Cache Is Not Enabled<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Do not run this check over SSH. PHP on the command line has its own setting, <code>opcache.enable_cli<\/code>, which is off by default, and without it OPcache does not start in the command-line PHP at all. A check run there reports the cache as off whatever the website is doing. Tideways\u2019 guide to <a href=\"https:\/\/tideways.com\/profiler\/blog\/fine-tune-your-opcache-configuration-to-avoid-caching-suprises\" target=\"_blank\" rel=\"noopener\">tuning OPcache<\/a> makes the same point: every kind of PHP process has its own shared memory, so the console cannot see the web server\u2019s cache. Load the test file through the domain.<\/p>\n\n\n\n<h3 id=\"aioseo-decode-your-opcode-cache-is-not-enabled-result\" class=\"wp-block-heading\">Decode Your Opcode Cache Is Not Enabled Result<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The same logic as a tool: enter the Info row and the test-file values, and it tells you whether the cache is really off and the one step to take next.<\/p>\n\n\n\n<style>\n.ahoc-tool{background:#0f172a;border-radius:10px;padding:22px;margin:26px 0;color:#fff;font-size:.95rem}\n.ahoc-tool h3{color:#fff;margin:0 0 6px;font-size:1.15rem}\n.ahoc-tool p.ahoc-sub{color:#eef3ff;margin:0 0 18px;font-size:.88rem}\n.ahoc-f{margin-bottom:14px}\n.ahoc-f label{display:block;color:#eef3ff;font-size:.8rem;margin-bottom:5px}\n.ahoc-f select{width:100%;padding:8px;border:1px solid #334155;border-radius:6px;background:#1e293b;color:#fff;font-size:.9rem;box-sizing:border-box}\n.ahoc-btn{background:#2563eb;color:#fff;border:0;border-radius:6px;padding:10px 20px;font-size:.92rem;cursor:pointer;text-decoration:none;display:inline-block}\n.ahoc-out{margin-top:18px;padding:16px;background:#1e293b;border-left:4px solid #2563eb;border-radius:6px;display:none}\n.ahoc-out.ahoc-on{display:block}\n.ahoc-num{font-size:1.15rem;font-weight:700;color:#60a5fa;display:block;margin-bottom:8px}\n.ahoc-out p{margin:0 0 10px;color:#fff}\n.ahoc-out p strong{color:#93c5fd}\n.ahoc-note{color:#94a3b8;font-size:.78rem;margin-top:12px}\n<\/style>\n<div class=\"ahoc-tool\" data-ahoc=\"decoder\">\n  <h3>Opcode Cache Warning Decoder<\/h3>\n  <p class=\"ahoc-sub\">Enter what Site Health and the test file show. The answer is whether OPcache is really off, why WordPress says so, and the one thing to do next.<\/p>\n  <div class=\"ahoc-f\">\n    <label for=\"ahoc-info\">Site Health, Info, Server: the Opcode cache row<\/label>\n    <select id=\"ahoc-info\">\n      <option value=\"config\" selected>Disabled by configuration<\/option>\n      <option value=\"disabled\">Disabled<\/option>\n      <option value=\"enabled\">Enabled<\/option>\n      <option value=\"none\">I have not looked yet<\/option>\n    <\/select>\n  <\/div>\n  <div class=\"ahoc-f\">\n    <label for=\"ahoc-test\">Test file result, loaded in a browser<\/label>\n    <select id=\"ahoc-test\">\n      <option value=\"none\" selected>Not run yet<\/option>\n      <option value=\"restricted\">true, 1, and a path<\/option>\n      <option value=\"clean\">true, 1, and an empty string<\/option>\n      <option value=\"off\">true, then 0 or an empty string<\/option>\n      <option value=\"missing\">false, false, false<\/option>\n    <\/select>\n  <\/div>\n  <div class=\"ahoc-f\">\n    <label for=\"ahoc-php\">PHP version for this domain<\/label>\n    <select id=\"ahoc-php\">\n      <option value=\"old\" selected>8.4 or older<\/option>\n      <option value=\"new\">8.5 or newer<\/option>\n    <\/select>\n  <\/div>\n  <button class=\"ahoc-btn wp-element-button\" id=\"ahoc-go\" type=\"button\">Decode it<\/button>\n  <div class=\"ahoc-out\" id=\"ahoc-out\">\n    <span class=\"ahoc-num\" id=\"ahoc-num\">&#8212;<\/span>\n    <p><strong>Is OPcache caching your site?<\/strong> <span id=\"ahoc-run\"><\/span><\/p>\n    <p><strong>Why WordPress warns:<\/strong> <span id=\"ahoc-why\"><\/span><\/p>\n    <p><strong>Do this next:<\/strong> <span id=\"ahoc-next\"><\/span><\/p>\n    <p class=\"ahoc-note\">Read from the WordPress 7.1.3 and PHP source. It cannot see your server, so the test file is what settles it.<\/p>\n  <\/div>\n<\/div>\n<script>\n(function(){\n  document.addEventListener('DOMContentLoaded', function(){\n    var tool = document.querySelector('[data-ahoc]');\n    if (!tool) { return; }\n    var mode = tool.getAttribute('data-ahoc');\n    if (mode !== 'decoder') { return; }\n    var go = document.getElementById('ahoc-go');\n    if (!go) { return; }\n    var out = document.getElementById('ahoc-out');\n    if (!out) { return; }\n    var num = document.getElementById('ahoc-num');\n    if (!num) { return; }\n    var run = document.getElementById('ahoc-run');\n    if (!run) { return; }\n    var why = document.getElementById('ahoc-why');\n    if (!why) { return; }\n    var next = document.getElementById('ahoc-next');\n    if (!next) { return; }\n    var R = {};\n    R['restricted'] = ['False alarm', 'Yes.', 'Your host limits which scripts may call the status function, so it returns false and WordPress reads that as off.', 'Leave it. If the warning bothers you, hide this one test with a must-use plugin and remove it once WordPress fixes the check.'];\n    R['clean'] = ['Ask your host', 'Probably not.', 'The switch is on and nothing restricts the function, so the cache most likely failed to start.', 'Open a ticket with the Info row and the three test values. This one needs the server log.'];\n    R['off'] = ['Really off: switched off', 'No.', 'OPcache is loaded but its switch is off for this site.', 'Look in .user.ini in your site folder, and in cPanel MultiPHP INI Editor, for opcache.enable set to 0 and remove it. If there is none, the switch is a server setting, so ask your host.'];\n    R['missing'] = ['Really off: not loaded', 'No.', 'The OPcache extension is not loaded for this PHP version, so the status function does not exist.', 'Try another PHP version in cPanel MultiPHP Manager and run the test again. PHP 8.5 always loads OPcache.'];\n    R['missing85'] = ['Check the test', 'Unknown.', 'PHP 8.5 always loads OPcache, so false here means the test file ran under a different PHP version.', 'Confirm the domain version in MultiPHP Manager and load the test file from that domain.'];\n    R['infoconfig'] = ['Probably a false alarm', 'Probably yes.', 'The status function returned no answer. On shared hosting that is usually a restriction, not a cache that is off.', 'Run the test file to confirm before you change anything.'];\n    R['infodisabled'] = ['Really off', 'No.', 'The extension is missing or switched off.', 'Run the test file to see which, then follow its answer.'];\n    R['infoenabled'] = ['No warning to fix', 'Yes.', 'Status and Info read the same function, so the warning should not appear.', 'Reload Site Health. If the warning stays, you are looking at an old Status result.'];\n    R['infonone'] = ['Start with the Info tab', 'Unknown.', 'The warning alone cannot tell a false alarm from a real fault.', 'Open Tools, Site Health, Info, Server, and read the Opcode cache row.'];\n    go.addEventListener('click', function(){\n      var inf = document.getElementById('ahoc-info');\n      if (!inf) { return; }\n      var tst = document.getElementById('ahoc-test');\n      if (!tst) { return; }\n      var php = document.getElementById('ahoc-php');\n      if (!php) { return; }\n      var k = 'info' + inf.value;\n      if (tst.value !== 'none') { k = tst.value; }\n      if (k === 'missing') {\n        if (php.value === 'new') { k = 'missing85'; }\n      }\n      var r = R[k];\n      num.innerHTML = r[0];\n      run.innerHTML = r[1];\n      why.innerHTML = r[2];\n      next.innerHTML = r[3];\n      out.className = 'ahoc-out ahoc-on';\n    });\n  });\n})();\n<\/script>\n\n\n\n<h2 id=\"aioseo-how-to-fix-opcode-cache-is-not-enabled-in-order\" class=\"wp-block-heading\">How to Fix Opcode Cache Is Not Enabled, in Order<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Work through these in sequence and stop at the first one that applies. Most shared-hosting sites stop at the first step.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>If the Info row says <em>Disabled by configuration<\/em> and the test file shows 1 and a path, the cache is running. Leave it. Nothing you change in WordPress will alter the result, and the warning costs nothing.<\/li>\n\n\n\n<li>If you want the warning gone anyway, remove only this test with the <code>site_status_tests<\/code> filter, unsetting the <code>opcode_cache<\/code> entry from the <code>direct<\/code> list in a small must-use plugin. Remove it again when WordPress fixes the check.<\/li>\n\n\n\n<li>If the test file shows the switch off, search <code>.user.ini<\/code> in your site folder and the cPanel MultiPHP INI Editor for <code>opcache.enable<\/code> set to 0, remove it, wait five minutes for PHP to reread the file, and check again.<\/li>\n\n\n\n<li>If the extension is not loaded, open cPanel <strong>MultiPHP Manager<\/strong>, try another PHP version on a staging copy first, then run the test file again. PHP 8.5 always loads OPcache.<\/li>\n\n\n\n<li>If none of that changes the Info row, the setting lives at server level. Ask your host, and send the Info row and the three test values with the question.<\/li>\n<\/ol>\n\n\n\n<h3 id=\"aioseo-opcode-cache-is-not-enabled-is-not-the-other-cache-warnings\" class=\"wp-block-heading\">Opcode Cache Is Not Enabled Is Not the Other Cache Warnings<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Site Health has two more Performance warnings about caching, and fixing this one does not touch them. OPcache keeps compiled code. A page cache keeps finished pages, covered in our guide to <a href=\"https:\/\/www.ahosting.net\/blog\/page-cache-is-not-detected\/\">the page cache is not detected warning<\/a>, and a persistent object cache keeps database results between requests, covered in <a href=\"https:\/\/www.ahosting.net\/blog\/you-should-use-a-persistent-object-cache\/\">you should use a persistent object cache<\/a>. Each is a separate setting with its own warning.<\/p>\n\n\n\n<h2 id=\"aioseo-opcode-cache-is-not-enabled-on-ahosting-servers\" class=\"wp-block-heading\">Opcode Cache Is Not Enabled on AHosting Servers<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On our shared servers, PHP runs as your own cPanel user through LiteSpeed, one of the server interfaces OPcache supports, and the Zend OPcache extension is present on all three of our shared servers; the test file shows whether the PHP version you picked loads it. That has two practical consequences for this warning. The test file, loaded through your domain, sees exactly the PHP your site uses, so its three values are the answer for your account. And <code>.user.ini<\/code> in your site folder is read, so a stray line switching the cache off would take effect here and is worth checking for.<\/p>\n\n\n\n<h3 id=\"aioseo-where-opcache-sits-next-to-litespeed-cache\" class=\"wp-block-heading\">Where OPcache Sits Next to LiteSpeed Cache<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">OPcache speeds up the PHP that runs. A page served from LiteSpeed\u2019s page cache runs no PHP at all, so the two stack rather than compete: the page cache handles repeat visitors, and OPcache handles everything it cannot serve, such as logged-in sessions, carts and the admin area. Our comparison of <a href=\"https:\/\/www.ahosting.net\/blog\/reduce-ttfb-wordpress-server-vs-plugins\/\">server-side and plugin fixes for TTFB<\/a> shows where each layer sits in a request.<\/p>\n\n\n\n<h3 id=\"aioseo-when-to-open-a-ticket\" class=\"wp-block-heading\">When to Open a Ticket<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Everything in this guide works the same way on our <a href=\"https:\/\/www.ahosting.net\/wordpress-hosting.html\">WordPress hosting plans<\/a> and <a href=\"https:\/\/www.ahosting.net\/web-hosting.html\">standard web hosting plans<\/a>. If the Info tab says Disabled and switching PHP versions does not change it, open a ticket with that row and the PHP version you run, and we will look at it with you. If you want to choose the cache size or the restriction yourself, <a href=\"https:\/\/www.ahosting.net\/vps-hosting.html\">a VPS with full root access<\/a> puts the PHP-wide settings in your hands. The warning alone is not a reason to move.<\/p>\n\n\n\n<h2 id=\"aioseo-a-practical-checklist-for-opcode-cache-is-not-enabled\" class=\"wp-block-heading\">A Practical Checklist for Opcode Cache Is Not Enabled<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Read the Opcode cache row under Site Health, Info, Server before changing anything.<\/li>\n\n\n\n<li>Treat <em>Disabled by configuration<\/em> as a likely false alarm until a test says otherwise.<\/li>\n\n\n\n<li>Load the three-value test file through the domain, never over SSH.<\/li>\n\n\n\n<li>Delete the test file as soon as you have the three values.<\/li>\n\n\n\n<li>Look for <code>opcache.enable<\/code> set to 0 in <code>.user.ini<\/code> and remove it.<\/li>\n\n\n\n<li>Never paste OPcache memory settings into <code>.user.ini<\/code>; PHP ignores them there.<\/li>\n\n\n\n<li>Try another PHP version on a staging copy before switching the live site.<\/li>\n\n\n\n<li>Hide the test only after confirming the cache runs, and only in a must-use plugin.<\/li>\n\n\n\n<li>Fix page caching and object caching separately; this warning covers neither.<\/li>\n\n\n\n<li>Send the Info row and the three test values with any question to your host.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"faq-opcode-cache-is-not-enabled\" class=\"wp-block-heading\">Frequently Asked Questions: Opcode Cache Is Not Enabled<\/h2>\n\n\n\n<h3 id=\"faq-how-do-i-fix-wordpress-opcache-not-enabled-in-php\" class=\"wp-block-heading\">How do I fix WordPress OPcache not enabled in PHP?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">First and foremost, find out whether OPcache is really off. Open Tools, Site Health, Info, Server and read the Opcode cache row. Disabled by configuration usually means OPcache is running and your host restricts its status function, so there is nothing to fix. Disabled means it is off: try another PHP version in cPanel MultiPHP Manager, remove any line that switches it off, or ask your host.<\/p>\n\n\n\n<h3 id=\"faq-what-does-opcode-cache-is-not-enabled-mean-in-wordpress-site-health-in-2026\" class=\"wp-block-heading\">What does opcode cache is not enabled mean in WordPress Site Health in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In other words, one PHP function did not confirm that the cache is on. WordPress 7.0 added the test, and in 7.1 it passes only when opcache_get_status returns a report saying OPcache is enabled. Any other answer, including no answer at all, gives the warning. It is graded recommended under the Performance badge, so your site keeps working either way.<\/p>\n\n\n\n<h3 id=\"faq-opcode-cache-is-not-enabled-vs-disabled-by-configuration-what-is-the-difference\" class=\"wp-block-heading\">Opcode cache is not enabled vs Disabled by configuration: what is the difference?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Specifically, the first is the Status label and the second is one of the values Site Health shows for the Opcode cache row on its Info tab. The Status label appears for every cause. The Info value narrows it down: Disabled means the cache is off, while Disabled by configuration means the status function refused to answer, which on shared hosting usually means the cache is running.<\/p>\n\n\n\n<h3 id=\"faq-why-does-site-health-say-opcode-cache-is-not-enabled-when-phpinfo-shows-opcache-running\" class=\"wp-block-heading\">Why does Site Health say opcode cache is not enabled when phpinfo shows OPcache running?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Typically because your host restricts which scripts may call the OPcache status function. PHP then returns false with a warning, and WordPress reads false as off. The cache keeps working for every page. WordPress Trac ticket 65395 reports exactly this on shared hosting, and a proposed patch would fall back to the opcache.enable setting, but it is not part of WordPress 7.1.3.<\/p>\n\n\n\n<h3 id=\"faq-can-i-fix-opcode-cache-is-not-enabled-with-user-ini-on-shared-hosting\" class=\"wp-block-heading\">Can I fix opcode cache is not enabled with .user.ini on shared hosting?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In fact, no. PHP accepts opcache.enable set to 1 only when PHP starts, so the same line in .user.ini is refused with a warning. The memory and file-count settings often suggested alongside it are system-level and ignored there too. What .user.ini can do is switch OPcache off for your site, so check that yours does not contain opcache.enable set to 0.<\/p>\n\n\n\n<h3 id=\"faq-is-it-safe-to-hide-the-opcode-cache-is-not-enabled-test-in-site-health\" class=\"wp-block-heading\">Is it safe to hide the opcode cache is not enabled test in Site Health?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Indeed it is, once you have confirmed that OPcache is running. Removing the test with the site_status_tests filter changes only what Site Health reports, not how PHP behaves. Do it in a small must-use plugin rather than a theme, and remove it again when WordPress ships a fix, because a hidden test cannot warn you if the cache is ever switched off for real.<\/p>\n\n\n\n<h3 id=\"faq-php-8-4-vs-php-8-5-does-php-8-5-turn-on-opcache-automatically-in-2026\" class=\"wp-block-heading\">PHP 8.4 vs PHP 8.5: does PHP 8.5 turn on OPcache automatically in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In practice, only partly. On PHP 8.4 and older, OPcache is an extension a host may or may not load. On PHP 8.5 it is built into PHP and always loaded, but the opcache.enable switch is still honored, so a host can still switch it off, and a restricted status function still gives the same false warning. Check the Info tab after switching versions.<\/p>\n\n\n\n<h3 id=\"faq-how-do-i-check-opcode-cache-is-not-enabled-on-ahosting-shared-hosting-in-2026\" class=\"wp-block-heading\">How do I check opcode cache is not enabled on AHosting shared hosting in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Above all, check through the website, not over SSH. Read the Opcode cache row in Site Health Info, then load the three-value test file from this guide in a browser and delete it afterward. On our servers PHP runs as your own cPanel user through LiteSpeed, which OPcache supports, so the test file sees exactly what your site sees.<\/p>\n\n\n\n<h3 id=\"faq-can-ahosting-support-check-why-my-site-says-opcode-cache-is-not-enabled\" class=\"wp-block-heading\">Can AHosting support check why my site says opcode cache is not enabled?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Notably, a Disabled by configuration result with opcache.enable on needs no ticket, because the cache is working. If the Info tab says Disabled and switching PHP versions in MultiPHP Manager does not change it, open a ticket with that row and the PHP version you run, and we will look at it with you.<\/p>\n\n\n\n<h3 id=\"faq-do-i-need-an-ahosting-vps-to-control-opcache-settings-in-2026\" class=\"wp-block-heading\">Do I need an AHosting VPS to control OPcache settings in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Fortunately not to clear this warning. On a shared plan the cache size, the status-function restriction and the master switch are set for the whole server. A VPS makes sense when you want to choose those yourself, for example to give a large WooCommerce store more OPcache memory or to watch hit rates in Site Health.<\/p>\n\n\n\n<script>\n(function(){\n  document.addEventListener('DOMContentLoaded', function(){\n    var allH3s = document.querySelectorAll('h3.wp-block-heading');\n    var inFaq = false;\n    for (var i = 0; i < allH3s.length; i++) {\n      var h3 = allH3s[i];\n      var prev = h3.previousElementSibling;\n      if (prev) {\n        if (prev.tagName === 'H2') {\n          var prevId = prev.getAttribute('id');\n          if (prevId) {\n            if (prevId.indexOf('faq-') === 0) {\n              inFaq = true;\n            } else {\n              inFaq = false;\n            }\n          }\n        }\n      }\n      if (inFaq) {\n        initToggle(h3);\n      }\n    }\n    function initToggle(h3) {\n      var answer = h3.nextElementSibling;\n      if (!answer) { return; }\n      if (answer.tagName !== 'P') { return; }\n      answer.style.display = 'none';\n      h3.style.cursor = 'pointer';\n      h3.setAttribute('tabindex', '0');\n      h3.setAttribute('aria-expanded', 'false');\n      h3.addEventListener('click', function(){\n        toggleOne(h3, answer);\n      });\n      h3.addEventListener('keydown', function(ev){\n        if (ev.key === 'Enter') { toggleOne(h3, answer); }\n        if (ev.key === ' ') { ev.preventDefault(); toggleOne(h3, answer); }\n      });\n    }\n    function toggleOne(h3, answer) {\n      var open = h3.getAttribute('aria-expanded') === 'true';\n      if (open) {\n        answer.style.display = 'none';\n        h3.setAttribute('aria-expanded', 'false');\n      } else {\n        answer.style.display = 'block';\n        h3.setAttribute('aria-expanded', 'true');\n      }\n    }\n  });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>TL;DR Opcode cache is not enabled means one PHP function, opcache_get_status, did not confirm that OPcache is on. That happens when the cache really is off, and also when it is running but your host restricts the function. Open Site Health, Info, Server first. Disabled by configuration usually means the cache works and there is [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1412,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[8],"tags":[68,172,174,307,108,110,276,113,131,117],"class_list":["post-1411","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress","tag-caching","tag-multiphp-manager","tag-opcache","tag-opcode-cache-is-not-enabled","tag-php","tag-shared-hosting","tag-site-health","tag-wordpress-errors","tag-wordpress-performance","tag-wordpress-troubleshooting"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"Opcode cache is not enabled does not always mean OPcache is off. Read the Site Health Info row, spot the shared-hosting false alarm, and fix the real one.\" \/>\n\t<meta name=\"robots\" content=\"max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n\t<meta name=\"author\" content=\"Matt Chrust\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"AHosting Blog | WordPress Hosting Tips &amp; Guides\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Opcode Cache Is Not Enabled: WordPress Fix | AHosting\" \/>\n\t\t<meta property=\"og:description\" content=\"Opcode cache is not enabled does not always mean OPcache is off. Read the Site Health Info row, spot the shared-hosting false alarm, and fix the real one.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/opcode-cache-is-not-enabled-ahosting.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/opcode-cache-is-not-enabled-ahosting.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-10-08T12:25:21+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-09T11:01:44+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@ahostingdotnet\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Opcode Cache Is Not Enabled: WordPress Fix | AHosting\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Opcode cache is not enabled does not always mean OPcache is off. Read the Site Health Info row, spot the shared-hosting false alarm, and fix the real one.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@ahostingdotnet\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/opcode-cache-is-not-enabled-ahosting.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/#article\",\"name\":\"Opcode Cache Is Not Enabled: WordPress Fix | AHosting\",\"headline\":\"Opcode Cache Is Not Enabled? What WordPress 7 Actually Checks\",\"author\":{\"@type\":\"Person\",\"name\":\"Matt Chrust\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/opcode-cache-is-not-enabled-ahosting.jpg\",\"width\":1200,\"height\":675,\"caption\":\"The opcode cache is not enabled warning covers a real fault and a shared-hosting false alarm; the Opcode cache row in Site Health Info tells them apart. By Matt Chrust, Director of Business Development, AHosting.\"},\"datePublished\":\"2026-10-08T12:25:21+00:00\",\"dateModified\":\"2026-10-09T11:01:44+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/#webpage\"},\"articleSection\":\"WordPress, Caching, multiphp manager, OPcache, opcode cache is not enabled, PHP, Shared Hosting, Site Health, WordPress errors, wordpress performance, WordPress troubleshooting\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/#listItem\",\"name\":\"WordPress\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/#listItem\",\"position\":2,\"name\":\"WordPress\",\"item\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/#listItem\",\"name\":\"Opcode Cache Is Not Enabled? What WordPress 7 Actually Checks\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/#listItem\",\"position\":3,\"name\":\"Opcode Cache Is Not Enabled? What WordPress 7 Actually Checks\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/#listItem\",\"name\":\"WordPress\"},\"item\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/\"}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#organization\",\"name\":\"AHosting\",\"description\":\"WordPress Hosting Tips & Guides\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/assets\\\/img\\\/ahosting-logo.svg\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/#organizationLogo\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/ahostingdotnet\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/#author\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/\",\"name\":\"Matt Chrust\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/795895edac1c44589f6c7f5e6bb79df405fbbaac15817bdd387ec57da61731ec?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Matt Chrust\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/#webpage\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/\",\"name\":\"Opcode Cache Is Not Enabled: WordPress Fix | AHosting\",\"description\":\"Opcode cache is not enabled does not always mean OPcache is off. Read the Site Health Info row, spot the shared-hosting false alarm, and fix the real one.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/author\\\/matt-chrust\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/opcode-cache-is-not-enabled-ahosting.jpg\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/#mainImage\",\"width\":1200,\"height\":675,\"caption\":\"The opcode cache is not enabled warning covers a real fault and a shared-hosting false alarm; the Opcode cache row in Site Health Info tells them apart. By Matt Chrust, Director of Business Development, AHosting.\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/opcode-cache-is-not-enabled\\\/#mainImage\"},\"datePublished\":\"2026-10-08T12:25:21+00:00\",\"dateModified\":\"2026-10-09T11:01:44+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#website\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/\",\"name\":\"AHosting\",\"description\":\"WordPress Hosting Tips & Guides\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Opcode Cache Is Not Enabled: WordPress Fix | AHosting","description":"Opcode cache is not enabled does not always mean OPcache is off. Read the Site Health Info row, spot the shared-hosting false alarm, and fix the real one.","canonical_url":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/","robots":"max-snippet:-1, max-image-preview:large, max-video-preview:-1","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/#article","name":"Opcode Cache Is Not Enabled: WordPress Fix | AHosting","headline":"Opcode Cache Is Not Enabled? What WordPress 7 Actually Checks","author":{"@type":"Person","name":"Matt Chrust","url":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/"},"publisher":{"@id":"https:\/\/www.ahosting.net\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/opcode-cache-is-not-enabled-ahosting.jpg","width":1200,"height":675,"caption":"The opcode cache is not enabled warning covers a real fault and a shared-hosting false alarm; the Opcode cache row in Site Health Info tells them apart. By Matt Chrust, Director of Business Development, AHosting."},"datePublished":"2026-10-08T12:25:21+00:00","dateModified":"2026-10-09T11:01:44+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/#webpage"},"isPartOf":{"@id":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/#webpage"},"articleSection":"WordPress, Caching, multiphp manager, OPcache, opcode cache is not enabled, PHP, Shared Hosting, Site Health, WordPress errors, wordpress performance, WordPress troubleshooting"},{"@type":"BreadcrumbList","@id":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/www.ahosting.net\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/#listItem","name":"WordPress"}},{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/#listItem","position":2,"name":"WordPress","item":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/#listItem","name":"Opcode Cache Is Not Enabled? What WordPress 7 Actually Checks"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/#listItem","position":3,"name":"Opcode Cache Is Not Enabled? What WordPress 7 Actually Checks","previousItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/#listItem","name":"WordPress"},"item":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/"}]},{"@type":"Organization","@id":"https:\/\/www.ahosting.net\/#organization","name":"AHosting","description":"WordPress Hosting Tips & Guides","url":"https:\/\/www.ahosting.net\/","logo":{"@type":"ImageObject","url":"https:\/\/www.ahosting.net\/assets\/img\/ahosting-logo.svg","@id":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/#organizationLogo"},"image":{"@id":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/#organizationLogo"},"sameAs":["https:\/\/x.com\/ahostingdotnet"]},{"@type":"Person","@id":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/#author","url":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/","name":"Matt Chrust","image":{"@type":"ImageObject","@id":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/795895edac1c44589f6c7f5e6bb79df405fbbaac15817bdd387ec57da61731ec?s=96&d=mm&r=g","width":96,"height":96,"caption":"Matt Chrust"}},{"@type":"WebPage","@id":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/#webpage","url":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/","name":"Opcode Cache Is Not Enabled: WordPress Fix | AHosting","description":"Opcode cache is not enabled does not always mean OPcache is off. Read the Site Health Info row, spot the shared-hosting false alarm, and fix the real one.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.ahosting.net\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/#breadcrumblist"},"author":{"@id":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/#author"},"creator":{"@id":"https:\/\/www.ahosting.net\/blog\/author\/matt-chrust\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/opcode-cache-is-not-enabled-ahosting.jpg","@id":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/#mainImage","width":1200,"height":675,"caption":"The opcode cache is not enabled warning covers a real fault and a shared-hosting false alarm; the Opcode cache row in Site Health Info tells them apart. By Matt Chrust, Director of Business Development, AHosting."},"primaryImageOfPage":{"@id":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/#mainImage"},"datePublished":"2026-10-08T12:25:21+00:00","dateModified":"2026-10-09T11:01:44+00:00"},{"@type":"WebSite","@id":"https:\/\/www.ahosting.net\/#website","url":"https:\/\/www.ahosting.net\/","name":"AHosting","description":"WordPress Hosting Tips & Guides","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.ahosting.net\/#organization"}}]},"og:locale":"en_US","og:site_name":"AHosting Blog | WordPress Hosting Tips &amp; Guides","og:type":"article","og:title":"Opcode Cache Is Not Enabled: WordPress Fix | AHosting","og:description":"Opcode cache is not enabled does not always mean OPcache is off. Read the Site Health Info row, spot the shared-hosting false alarm, and fix the real one.","og:url":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/","og:image":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/opcode-cache-is-not-enabled-ahosting.jpg","og:image:secure_url":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/opcode-cache-is-not-enabled-ahosting.jpg","og:image:width":1200,"og:image:height":675,"article:published_time":"2026-10-08T12:25:21+00:00","article:modified_time":"2026-10-09T11:01:44+00:00","twitter:card":"summary_large_image","twitter:site":"@ahostingdotnet","twitter:title":"Opcode Cache Is Not Enabled: WordPress Fix | AHosting","twitter:description":"Opcode cache is not enabled does not always mean OPcache is off. Read the Site Health Info row, spot the shared-hosting false alarm, and fix the real one.","twitter:creator":"@ahostingdotnet","twitter:image":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/opcode-cache-is-not-enabled-ahosting.jpg"},"aioseo_meta_data":{"post_id":"1411","title":"Opcode Cache Is Not Enabled: WordPress Fix | AHosting","description":"Opcode cache is not enabled does not always mean OPcache is off. Read the Site Health Info row, spot the shared-hosting false alarm, and fix the real one.","keywords":null,"keyphrases":{"focus":{"keyphrase":"opcode cache is not enabled","score":0,"analysis":[]},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-10-08 12:21:35","updated":"2026-10-09 11:02:37","seo_analyzer_scan_date":null,"focus_keyword":"opcode cache is not enabled","additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.ahosting.net\/blog\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/\" title=\"WordPress\">WordPress<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tOpcode Cache Is Not Enabled? What WordPress 7 Actually Checks\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.ahosting.net\/blog\/"},{"label":"WordPress","link":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/"},{"label":"Opcode Cache Is Not Enabled? What WordPress 7 Actually Checks","link":"https:\/\/www.ahosting.net\/blog\/opcode-cache-is-not-enabled\/"}],"_links":{"self":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/1411","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/comments?post=1411"}],"version-history":[{"count":2,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/1411\/revisions"}],"predecessor-version":[{"id":1422,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/1411\/revisions\/1422"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/media\/1412"}],"wp:attachment":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/media?parent=1411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/categories?post=1411"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/tags?post=1411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}