{"id":6077,"date":"2026-07-13T14:02:53","date_gmt":"2026-07-13T11:02:53","guid":{"rendered":"https:\/\/www.scalahosting.com\/kb\/?p=6077"},"modified":"2026-07-13T14:02:53","modified_gmt":"2026-07-13T11:02:53","slug":"enable-php-fpm-slow-log-spanel","status":"publish","type":"post","link":"https:\/\/www.scalahosting.com\/kb\/enable-php-fpm-slow-log-spanel\/","title":{"rendered":"How to Enable and Read the PHP-FPM Slow Log in SPanel"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">SPanel includes a per-account PHP-FPM slow log that you can enable from <strong>Tools <\/strong>&gt; <strong>PHP Manager<\/strong>, with no SSH or root access needed. You set a threshold in seconds, and any PHP request that runs longer has its call stack recorded to a private per-user log. The one thing to plan around: the slow log auto-disables after 24 hours, so it is a short diagnostic window, not a permanent setting. Enable it, reproduce the slow page, then read what it captured.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Who this is for<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is for developers and site owners who can see that a page is slow but cannot tell which PHP request is causing it, working from the SPanel User Interface without root or shell access. If you run a WordPress or custom PHP site, this is the built-in way to find the script eating the seconds.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What problem this solves<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A page &#8220;feels slow&#8221; tells you nothing about where the time goes, so without a way to see inside PHP you end up guessing &#8211; disabling plugins at random, or blaming the database. The slow log answers a narrower question: which requests crossed a time limit you chose, and what they were doing in PHP at that point. That turns a vague complaint into a specific script and call stack you can act on.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How SPanel solves this<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Open <strong>PHP Manager<\/strong> from SPanel&#8217;s User Interface. SPanel lists each domain in its own row, and every row has an <strong>Actions <\/strong>menu. Open it and select <strong>PHP Slow Log<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On the page you enable the slow log and set a threshold &#8211; the speed, in seconds. Any request slower than that value is logged. Behind the scenes your threshold becomes the PHP-FPM request_slowlog_timeout. Set the number, reproduce the slow page, then read the entries it collected.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why this is different in SPanel<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Two things stand out. First, it is a one-click, time-boxed diagnostic scoped to one account: you set the threshold, SPanel handles the PHP-FPM configuration, then switches the log off after 24 hours so a forgotten debug setting never lingers in production. Second, the output stays private &#8211; written to a per-user path, reached entirely from the SPanel UI, with no SSH, no root, and no shared log other accounts can read.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Before you start<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Access to the SPanel User Interface for the account that owns the domain is required.<\/li>\n\n\n\n<li>Think of a suitable threshold you want to set.<\/li>\n\n\n\n<li>A way to reproduce the slow page yourself &#8211; the log only fills when a slow request runs.<\/li>\n\n\n\n<li>Awareness of the 24-hour window: plan to enable, reproduce, and read in one sitting.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Step-by-step<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In SPanel, open<strong> PHP Manager.<\/strong> You should see each domain on the account in its own row.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/01-php-manager-1024x640.webp\" alt=\"How to Enable and Read the PHP-FPM Slow Log in SPanel, Step-by-step\" class=\"wp-image-6080\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/01-php-manager-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/01-php-manager-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/01-php-manager-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/01-php-manager.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Find the domain you want to diagnose &#8211; in our example, yoga.life &#8211; and open its <strong>Actions <\/strong>menu.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/02-slowlog-action-1024x640.webp\" alt=\"How to Enable and Read the PHP-FPM Slow Log in SPanel, Step-by-step 2\" class=\"wp-image-6081\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/02-slowlog-action-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/02-slowlog-action-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/02-slowlog-action-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/02-slowlog-action.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Click <strong>PHP Slow Log<\/strong> to open the slow log page for that domain. Enable the log and set the threshold using the drop-down. The threshold can be between 1 and 10 seconds. Click <strong>Save<\/strong>.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/03-slowlog-page-1024x640.webp\" alt=\"How to Enable and Read the PHP-FPM Slow Log in SPanel, Step-by-step 3\" class=\"wp-image-6082\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/03-slowlog-page-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/03-slowlog-page-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/03-slowlog-page-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/07\/03-slowlog-page.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Reproduce the slow page in your browser. Load the slow URL a few times so a request actually crosses your threshold.<\/li>\n\n\n\n<li>Return to the slow log page and read the captured entries. Each shows the PHP call stack of a request that ran past your threshold, pointing you at the script and function that were running.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What happens behind the scenes<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Your threshold becomes the PHP-FPM request_slowlog_timeout. When a request runs longer, PHP-FPM dumps its call stack into the log. SPanel writes that to \/var\/spanel\/userdata\/&lt;user&gt;\/slow-php.log, a path scoped to your account &#8211; which is why no SSH access is required and other accounts cannot see your entries. The same automation turns the setting back off after 24 hours.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Limitations and edge cases<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>It auto-disables after 24 hours.<\/strong> This is a time-boxed diagnostic, not a permanent setting. For an intermittent problem, re-enable it for another window rather than expecting it to stay on.<\/li>\n\n\n\n<li><strong>It only records requests slower than your threshold.<\/strong> Set the value too high and a moderately slow page never gets logged. If the log is empty, lower the threshold and reproduce again.<\/li>\n\n\n\n<li><strong>It captures the PHP call stack, not a full trace.<\/strong> You get the stack of the slow request, not a line-by-line profile or query timings. Use it to find the slow script, then dig in with your own tooling.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Troubleshooting<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-regular green-rows\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Symptom<\/strong><\/td><td><strong>Likely cause<\/strong><\/td><td><strong>What to do<\/strong><\/td><\/tr><tr><td>Log stays empty after reproducing<\/td><td>Threshold higher than the request&#8217;s actual time<\/td><td>Lower the threshold and load the slow page again<\/td><\/tr><tr><td>Log worked, now records nothing<\/td><td>The 24-hour window expired and it auto-disabled<\/td><td>Re-enable the slow log and reproduce<\/td><\/tr><tr><td>Stack shown but no clear cause<\/td><td>Slow log captures the call stack only<\/td><td>Use the named script as a starting point for deeper profiling<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>When to use this \/ when not to use this<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-regular green-rows\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Use this when<\/strong><\/td><td><strong>Skip or use something else when<\/strong><\/td><\/tr><tr><td>You need to find which PHP request is slow without SSH<\/td><td>You need continuous, always-on monitoring<\/td><\/tr><tr><td>You can reproduce the slow page on demand<\/td><td>The slowness is in the database or network, not PHP<\/td><\/tr><tr><td>You want a quick, account-scoped diagnostic<\/td><td>You need a full line-by-line profile<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>FAQ<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Do I need SSH or root access to use the slow log?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. You enable and read it entirely from the SPanel User Interface under Tools > PHP Manager, and the log is written to a per-user path.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Why is my slow log empty?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Usually the threshold is higher than the request&#8217;s actual run time, so nothing qualifies. Lower it and reproduce the page; it only records requests slower than the value you set.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>How long does the slow log stay enabled?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> It auto-disables after 24 hours. Enable it, capture the problem, and read the results in the same session.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>What threshold should I set?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> A few seconds is a reasonable start for a page that feels slow. Set it lower if you suspect a moderately slow request rather than a stuck one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Does the slow log show database query times?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. It captures the PHP call stack of the slow request, not query timings or a full trace. Use it to identify the script, then profile the database on its own.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Can other accounts see my slow log?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. The log lives at a per-user path tied to your account, and you reach it only through your own SPanel session.<\/p>\n\n\n\n<script type=\"application\/ld+json\">\n    {\n      \"@context\": \"https:\/\/schema.org\",\n      \"@type\": \"FAQPage\",\n      \"mainEntity\": [{\n        \"@type\": \"Question\",\n        \"name\": \"Do I need SSH or root access to use the slow log?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. You enable and read it entirely from the SPanel User Interface under Tools > PHP Manager, and the log is written to a per-user path.\"\n        }\n      }, {\n        \"@type\": \"Question\",\n        \"name\": \"Why is my slow log empty?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Usually the threshold is higher than the request's actual run time, so nothing qualifies. Lower it and reproduce the page; it only records requests slower than the value you set.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"How long does the slow log stay enabled?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"It auto-disables after 24 hours. Enable it, capture the problem, and read the results in the same session.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"What threshold should I set?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"A few seconds is a reasonable start for a page that feels slow. Set it lower if you suspect a moderately slow request rather than a stuck one.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Does the slow log show database query times?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. It captures the PHP call stack of the slow request, not query timings or a full trace. Use it to identify the script, then profile the database on its own.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Can other accounts see my slow log?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. The log lives at a per-user path tied to your account, and you reach it only through your own SPanel session.\"\n        }\n      }]\n    }\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>SPanel includes a per-account PHP-FPM slow log that you can enable from Tools &gt; PHP Manager, with no SSH or root access needed. You set a threshold in seconds, and any PHP request that runs longer has its call stack recorded to a private per-user log. The one thing to plan around: the slow log [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_titles_title":"Enable & Read the PHP-FPM Slow Log in SPanel | ScalaHosting KB","_seopress_titles_desc":"Enable the PHP-FPM slow log in SPanel to find which PHP request is slowing your site, no SSH required. Set a threshold and read the captured call stack.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[66],"tags":[],"class_list":["post-6077","post","type-post","status-publish","format-standard","hentry","category-tutorials"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/comments?post=6077"}],"version-history":[{"count":4,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6077\/revisions"}],"predecessor-version":[{"id":6087,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6077\/revisions\/6087"}],"wp:attachment":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/media?parent=6077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/categories?post=6077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/tags?post=6077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}