{"id":1354,"date":"2026-10-01T16:22:22","date_gmt":"2026-10-01T16:22:22","guid":{"rendered":"https:\/\/www.ahosting.net\/blog\/?p=1354"},"modified":"2026-10-01T20:56:18","modified_gmt":"2026-10-01T20:56:18","slug":"wordpress-asking-for-ftp-credentials","status":"publish","type":"post","link":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/","title":{"rendered":"WordPress Asking for FTP Credentials? It&#8217;s a File-Owner Check, Not a Password Problem"},"content":{"rendered":"\n<script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"FAQPage\", \"mainEntity\": [{\"@type\": \"Question\", \"name\": \"Why is WordPress asking for FTP credentials when I try to install a plugin?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In practice it means WordPress could not prove that it is safe to write files directly. Before any install or update, it creates a small test file in the folder it is about to change, then compares the owner of that new file with the owner of its own core files. If the file cannot be created, or the two owners differ, WordPress falls back to FTP and asks you for a login. The box is the result of a failed ownership or write test, not a request for a missing password.\"}}, {\"@type\": \"Question\", \"name\": \"Is FS_METHOD direct a safe fix for WordPress asking for FTP credentials in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Typically it hides the problem rather than fixing it. Setting FS_METHOD to direct in wp-config.php makes WordPress skip both of its tests and write files as whatever user PHP runs as. If the tests were failing because the owners differ, the writes then either fail with a new error or create files owned by the wrong user. On a server where PHP runs as your own account and your files are yours, the tests already pass and the line is unnecessary. In WordPress 7.1.2 the logic is unchanged.\"}}, {\"@type\": \"Question\", \"name\": \"FS_METHOD direct vs fixing file ownership: which stops WordPress asking for FTP credentials?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Above all, fixing ownership, because only that removes the reason the box appeared. FS_METHOD direct tells WordPress to stop checking. Correcting the owner, so that the WordPress files belong to the same user PHP runs as, makes the check pass on its own, and it also brings back automatic background updates, which the same failed check had switched off. The constant leaves the mismatch in place for the next plugin, theme or core update to trip over.\"}}, {\"@type\": \"Question\", \"name\": \"FTP vs FTPS in the WordPress Connection Information box: is the password encrypted?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In particular, only if you choose FTPS and the server can actually offer it. WordPress shows the FTPS option only when the PHP ftp extension is loaded, because its fallback FTP client has no encryption at all. Plain FTP sends the login and password across the network as readable text. On AHosting servers the ftp and openssl extensions are both loaded, so FTPS is genuinely available, but a correctly owned site on our servers should never show the box in the first place.\"}}, {\"@type\": \"Question\", \"name\": \"What causes WordPress asking for FTP credentials after moving a site to AHosting?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Typically a line in wp-config.php that the previous host needed and this one does not. Some hosts run PHP as a shared web server user, so their sites carry FS_METHOD set to ftpext or FTP_USER and FTP_PASS lines to force updates over FTP. Copied across unchanged, those lines force the box on a server that does not need it. Remove them first. If the box stays, check for files a restore or copy left owned by another user, which only support can change.\"}}, {\"@type\": \"Question\", \"name\": \"Why do I see WordPress asking for FTP credentials when Site Health says Writable?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Specifically because Site Health reports only whether each folder is writable, never who owns the files inside it. WordPress passes its first test, creating a file, and fails the second, comparing owners. That combination points at ownership. One exception is worth ruling out first: an account at its disk or file limit can still show Writable, because the folder permissions are fine even though no new file fits. Check Disk Usage and File Usage in cPanel before you conclude it is ownership.\"}}, {\"@type\": \"Question\", \"name\": \"Does WordPress store the FTP username and password typed into the Connection Information box?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"In fact only partly. WordPress saves the hostname and username in its options table so the form is prefilled next time, and it deliberately leaves out the password, the port and any SSH keys. The password is used for that one request and not kept. That is a real difference from typing the same password into wp-config.php as FTP_PASS, which stores it permanently as plain text in a file that PHP reads on every page load.\"}}, {\"@type\": \"Question\", \"name\": \"Why does Site Health report background updates not working as expected in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Notably, the same check that produces the FTP box is a common cause. Site Health runs the filesystem test itself, and when it fails the Background updates item turns critical with a note that the site is performing updates over FTP due to file ownership, telling you to talk to your hosting company. Automatic core updates then stop and WordPress emails the admin instead. Plugin and theme auto updates stop too, and those send no email at all.\"}}, {\"@type\": \"Question\", \"name\": \"Can AHosting support fix WordPress asking for FTP credentials on a CageFS account?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Indeed it can, and ownership is the part only support can do, because changing who owns a file needs privileges no customer account has. On AHosting shared and WordPress plans PHP already runs as your own cPanel user, so a correctly owned site never sees the box. When we scanned every docroot on one of our shared servers, only two files across 530 docroots belonged to anyone else. If you do see it, open a ticket and we will look at it, before you edit wp-config.php.\"}}, {\"@type\": \"Question\", \"name\": \"Should I move to an AHosting VPS to stop WordPress asking for FTP credentials in 2026?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Ultimately no, not for this reason alone. WordPress asking for FTP credentials is caused by a file ownership mismatch, and on shared hosting that is a ticket, not a migration. A VPS makes sense when you need control you will use again and again: choosing which user PHP runs as, owning the whole file tree with root access, and running your own deploy tools. On a VPS you can also set FS_METHOD to direct safely, because you decide who the PHP user is.\"}}]}<\/script>\n\n\n<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-wordpress-asking-for-ftp-credentials-actually-means\">What WordPress Asking for FTP Credentials Actually Means<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-box-word-for-word\">The Box, Word for Word<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-two-tests-wordpress-runs-before-it-asks-for-ftp\">The Two Tests WordPress Runs Before It Asks for FTP<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-test-one-can-php-create-a-file-in-that-folder\">Test One: Can PHP Create a File in That Folder?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-test-two-does-the-new-file-have-the-right-owner\">Test Two: Does the New File Have the Right Owner?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-where-fs_method-sits-in-that-order\">Where FS_METHOD Sits in That Order<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-why-the-same-check-quietly-turns-off-automatic-updates\">Why the Same Check Quietly Turns Off Automatic Updates<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-the-silent-rows-plugin-and-theme-updates\">The Silent Rows: Plugin and Theme Updates<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-how-to-tell-which-test-failed-without-writing-code\">How to Tell Which Test Failed Without Writing Code<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-reading-the-three-screens-together\">Reading the Three Screens Together<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-the-popular-fixes-for-wordpress-asking-for-ftp-credentials-actually-do\">What the Popular Fixes for WordPress Asking for FTP Credentials Actually Do<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-fs_method-set-to-direct\">FS_METHOD Set to direct<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-handing-the-files-to-www-data\">Handing the Files to www-data<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-ftp_user-and-ftp_pass-in-wp-config-php\">FTP_USER and FTP_PASS in wp-config.php<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-you-can-fix-yourself-on-shared-hosting\">What You Can Fix Yourself on Shared Hosting<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-what-only-your-host-can-fix-and-why\">What Only Your Host Can Fix, and Why<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-how-ahosting-servers-avoid-the-mismatch\">How AHosting Servers Avoid the Mismatch<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-when-fs_method-set-to-direct-is-the-right-answer\">When FS_METHOD Set to direct Is the Right Answer<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-wordpress-asking-for-ftp-credentials\">Frequently Asked Questions: WordPress Asking for FTP Credentials<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#faq-why-is-wordpress-asking-for-ftp-credentials-when-i-try-to-install-a-plugin\">Why is WordPress asking for FTP credentials when I try to install a plugin?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-is-fs-method-direct-a-safe-fix-for-wordpress-asking-for-ftp-credentials-in-2026\">Is FS_METHOD direct a safe fix for WordPress asking for FTP credentials in 2026?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-fs-method-direct-vs-fixing-file-ownership-which-stops-wordpress-asking-for-ftp-credentials\">FS_METHOD direct vs fixing file ownership: which stops WordPress asking for FTP credentials?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-ftp-vs-ftps-in-the-wordpress-connection-information-box-is-the-password-encrypted\">FTP vs FTPS in the WordPress Connection Information box: is the password encrypted?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-what-causes-wordpress-asking-for-ftp-credentials-after-moving-a-site-to-ahosting\">What causes WordPress asking for FTP credentials after moving a site to AHosting?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-why-do-i-see-wordpress-asking-for-ftp-credentials-when-site-health-says-writable\">Why do I see WordPress asking for FTP credentials when Site Health says Writable?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-does-wordpress-store-the-ftp-username-and-password-typed-into-the-connection-information-box\">Does WordPress store the FTP username and password typed into the Connection Information box?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-why-does-site-health-report-background-updates-not-working-as-expected-in-2026\">Why does Site Health report background updates not working as expected in 2026?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-can-ahosting-support-fix-wordpress-asking-for-ftp-credentials-on-a-cagefs-account\">Can AHosting support fix WordPress asking for FTP credentials on a CageFS account?<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#faq-should-i-move-to-an-ahosting-vps-to-stop-wordpress-asking-for-ftp-credentials-in-2026\">Should I move to an AHosting VPS to stop WordPress asking for FTP credentials 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>WordPress asking for FTP credentials means one of two tests failed: it could not create a test file in the folder it wants to change, or that new file did not belong to the same user as WordPress&#8217;s own files. It is an ownership check, not a missing password. The popular <code>FS_METHOD<\/code> fix only switches the check off. The same failure quietly stops automatic updates, so find which test failed, fix that, and leave ownership to your host.<\/p>\n<\/div>\n\n\n\n<h2 id=\"aioseo-what-wordpress-asking-for-ftp-credentials-actually-means\" class=\"wp-block-heading\">What WordPress Asking for FTP Credentials Actually Means<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When you see WordPress asking for FTP credentials in the middle of a plugin install or an update, it is easy to read the box as a login you forgot to set up. It is not. WordPress did not lose a password. It ran a safety check on the folder it was about to change, the check failed, and FTP is the fallback it reaches for when it cannot prove that writing files directly is safe. Every useful fix starts from knowing which part of that check failed, and the most popular one skips the check instead of answering it.<\/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-wordpress-asking-for-ftp-credentials-1.m4a\"><\/audio><figcaption class=\"wp-element-caption\">Listen: WordPress asks for FTP details when one of two file-ownership tests fails, and FS_METHOD only switches the check off. By Matt Chrust, Director of Business Development, AHosting.<\/figcaption><\/figure>\n\n\n\n<h3 id=\"aioseo-the-box-word-for-word\" class=\"wp-block-heading\">The Box, Word for Word<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The heading reads <em>Connection Information<\/em>. Underneath, WordPress 7.1.2, the current release on 30 September 2026, prints <em>To perform the requested action, WordPress needs to access your web server. Please enter your FTP credentials to proceed.<\/em> It then adds a sentence most readers skip: <em>If you do not remember your credentials, you should contact your web host.<\/em> Those words come from one function in <code>wp-admin\/includes\/file.php<\/code>, and that function prints the form only after a second function has already decided that writing directly is not an option. The form is a consequence. What this guide takes apart is the decision behind it.<\/p>\n\n\n\n<div class=\"ah-infographic\">\n  <svg viewBox=\"0 0 720 400\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"How WordPress decides whether to ask for FTP credentials: if FS_METHOD is set it uses that; otherwise it tries to create a test file in the folder it will change, and if that works it compares the new file's owner with the owner of its own core files. Only when both tests pass does it write directly. If either fails, it falls back to FTP and shows the Connection Information box.\">\n    <title>What WordPress checks before it asks for FTP credentials<\/title>\n    <desc>A decision flow in three steps from left to right. Step one: is the FS_METHOD constant defined in wp-config.php? If yes, WordPress uses it and skips the tests. Step two: can PHP create a test file in the folder WordPress is about to change? If no, the first test fails. Step three: is the new file owned by the same user as WordPress&#8217;s own core file? If no, the second test fails. Both tests passing leads to direct writes with no prompt. Either failure leads to the FTP fallback and the Connection Information box. A note below says the same failure also switches off automatic background updates.<\/desc>\n    <rect x=\"0\" y=\"0\" width=\"720\" height=\"400\" fill=\"#0f172a\"\/>\n    <text x=\"32\" y=\"40\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"19\" font-weight=\"700\">The FTP box is the answer to two tests.<\/text>\n    <text x=\"32\" y=\"63\" fill=\"#eef3ff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"13\">What WordPress 7.1.2 checks before any install or update, in order.<\/text>\n    <rect x=\"32\" y=\"90\" width=\"200\" height=\"104\" fill=\"#1e293b\" stroke=\"#2563eb\" stroke-width=\"2\"\/>\n    <text x=\"44\" y=\"114\" fill=\"#60a5fa\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\" font-weight=\"700\">0. FS_METHOD defined?<\/text>\n    <text x=\"44\" y=\"136\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">If wp-config.php sets it,<\/text>\n    <text x=\"44\" y=\"153\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">WordPress uses it and<\/text>\n    <text x=\"44\" y=\"170\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">skips both tests<\/text>\n    <rect x=\"260\" y=\"90\" width=\"200\" height=\"104\" fill=\"#1e293b\" stroke=\"#f59e0b\" stroke-width=\"2\"\/>\n    <text x=\"272\" y=\"114\" fill=\"#f59e0b\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\" font-weight=\"700\">1. Can PHP create a file?<\/text>\n    <text x=\"272\" y=\"136\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">A test file in the folder<\/text>\n    <text x=\"272\" y=\"153\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">it is about to change<\/text>\n    <text x=\"272\" y=\"176\" fill=\"#fbbf24\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\" font-weight=\"700\">Fails: permissions or quota<\/text>\n    <rect x=\"488\" y=\"90\" width=\"200\" height=\"104\" fill=\"#1e293b\" stroke=\"#f59e0b\" stroke-width=\"2\"\/>\n    <text x=\"500\" y=\"114\" fill=\"#f59e0b\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\" font-weight=\"700\">2. Same owner?<\/text>\n    <text x=\"500\" y=\"136\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">New file vs WordPress&#8217;s<\/text>\n    <text x=\"500\" y=\"153\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\">own core file<\/text>\n    <text x=\"500\" y=\"176\" fill=\"#fbbf24\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"11\" font-weight=\"700\">Fails: ownership mismatch<\/text>\n    <rect x=\"32\" y=\"222\" width=\"320\" height=\"96\" fill=\"#1e293b\" stroke=\"#2563eb\" stroke-width=\"2\"\/>\n    <text x=\"48\" y=\"248\" fill=\"#60a5fa\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"13\" font-weight=\"700\">Both pass: direct writes<\/text>\n    <text x=\"48\" y=\"272\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">No box. Installs, updates and<\/text>\n    <text x=\"48\" y=\"294\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">auto-updates run as normal<\/text>\n    <rect x=\"368\" y=\"222\" width=\"320\" height=\"96\" fill=\"#1e293b\" stroke=\"#f59e0b\" stroke-width=\"2\"\/>\n    <text x=\"384\" y=\"248\" fill=\"#f59e0b\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"13\" font-weight=\"700\">Either fails: FTP fallback<\/text>\n    <text x=\"384\" y=\"272\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">The Connection Information box,<\/text>\n    <text x=\"384\" y=\"294\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">and background updates stop<\/text>\n    <text x=\"32\" y=\"352\" fill=\"#ffffff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"13\" font-weight=\"700\">Fix the test that failed, not the question it produced.<\/text>\n    <text x=\"32\" y=\"374\" fill=\"#eef3ff\" font-family=\"Helvetica, Arial, sans-serif\" font-size=\"12\">FS_METHOD only reaches step 0. It turns the tests off; it does not make them pass.<\/text>\n  <\/svg>\n<\/div>\n\n\n\n<h2 id=\"aioseo-the-two-tests-wordpress-runs-before-it-asks-for-ftp\" class=\"wp-block-heading\">The Two Tests WordPress Runs Before It Asks for FTP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Behind every case of WordPress asking for FTP credentials is one decision, made by <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_filesystem_method\/\" target=\"_blank\" rel=\"noopener\">get_filesystem_method<\/a>, which returns one of four transports: <code>direct<\/code>, <code>ssh2<\/code>, <code>ftpext<\/code> or <code>ftpsockets<\/code>. Direct means PHP writes the files itself. The other three mean WordPress needs a login to a file-transfer service, and that is when the box appears. Direct is chosen only when two tests pass, one after the other.<\/p>\n\n\n\n<h3 id=\"aioseo-test-one-can-php-create-a-file-in-that-folder\" class=\"wp-block-heading\">Test One: Can PHP Create a File in That Folder?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">WordPress creates a small file named <code>temp-write-test-<\/code> followed by a unique string in the folder it is about to change, <code>wp-content<\/code> by default. If PHP cannot open that file for writing, the first test fails and the second is never reached. Three things cause that: the folder\u2019s permissions do not let the PHP user write, the folder belongs to someone else, or the account has no room for one more file. The last one surprises people, because nothing about the folder looks wrong.<\/p>\n\n\n\n<h3 id=\"aioseo-test-two-does-the-new-file-have-the-right-owner\" class=\"wp-block-heading\">Test Two: Does the New File Have the Right Owner?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If the file was created, WordPress asks PHP\u2019s <a href=\"https:\/\/www.php.net\/manual\/en\/function.fileowner.php\" target=\"_blank\" rel=\"noopener\">fileowner function<\/a> for two numbers: the owner of the test file it just made, and the owner of <code>file.php<\/code> itself, one of WordPress\u2019s own core files. Equal numbers mean PHP is creating files as the same user that owns WordPress. The source comment states the reasoning plainly: that is when it is \u201csafe to modify &amp; create new files via PHP.\u201d Different numbers mean a write would leave files owned by the wrong user, so WordPress refuses and falls back to FTP. The test file is deleted either way.<\/p>\n\n\n\n<h3 id=\"aioseo-where-fs_method-sits-in-that-order\" class=\"wp-block-heading\">Where FS_METHOD Sits in That Order<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Before either test runs, WordPress checks whether <code>wp-config.php<\/code> defines <code>FS_METHOD<\/code>. If it does, that value wins and neither test runs. This is the whole reason <code>define(\u2018FS_METHOD\u2019, \u2018direct\u2019)<\/code> makes the box disappear. It does not make the tests pass. It stops WordPress from asking the question. A value of <code>ftpext<\/code> left behind by a previous host does the opposite and forces the box on a server that does not need it.<\/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=\"4FoWapDBhwg\" data-title=\"WordPress Asking for FTP Credentials? The Real Fix (2026)\"><img src=\"https:\/\/i.ytimg.com\/vi\/4FoWapDBhwg\/hqdefault.jpg\" alt=\"\" width=\"480\" height=\"360\" loading=\"lazy\" decoding=\"async\"><button type=\"button\" class=\"ah-yt-play\" aria-label=\"Play video: WordPress Asking for FTP Credentials? The Real Fix (2026)\"><span aria-hidden=\"true\"><\/span><\/button><\/div>\n<\/div><\/figure>\n\n\n\n<h2 id=\"aioseo-why-the-same-check-quietly-turns-off-automatic-updates\" class=\"wp-block-heading\">Why the Same Check Quietly Turns Off Automatic Updates<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Most guides treat WordPress asking for FTP credentials as an install problem and stop at the box, because the box is what the reader sees. The check behind it does more damage out of sight. WordPress\u2019s automatic background updater runs the same filesystem test before every unattended update, and when it fails there is nobody there to type a password. So the update simply does not happen. Site Health notices: its <em>Background updates<\/em> item turns critical with the label <em>Background updates are not working as expected<\/em> and a note that reads, in part, <em>Your site is performing updates over FTP due to file ownership. Talk to your hosting company.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-table ah-ladder\"><table><thead><tr><th>Update type<\/th><th>Runs the ownership test<\/th><th>When the test fails<\/th><\/tr><\/thead><tbody><tr><td>Manual install or update from the dashboard<\/td><td>Yes<\/td><td>The Connection Information box<\/td><\/tr><tr><td>Automatic core update that adds new files<\/td><td>Yes<\/td><td>Skipped; WordPress emails the admin instead<\/td><\/tr><tr><td>Automatic core update that only changes existing files<\/td><td>Relaxed: writability only<\/td><td>Can still run if the folder is writable<\/td><\/tr><tr><td>Automatic plugin and theme updates<\/td><td>Yes<\/td><td>Skipped, with no email<\/td><\/tr><tr><td>Automatic translation updates<\/td><td>Yes<\/td><td>Skipped, with no email<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">The AHosting Background Update Map \u2014 what the filesystem check does to each kind of WordPress update, read from the 7.1.2 automatic updater. The quiet rows are the ones that matter.<\/figcaption><\/figure>\n\n\n\n<h3 id=\"aioseo-the-silent-rows-plugin-and-theme-updates\" class=\"wp-block-heading\">The Silent Rows: Plugin and Theme Updates<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The plugin row is the costly one. In its <a href=\"https:\/\/patchstack.com\/whitepaper\/state-of-wordpress-security-in-2026\/\" target=\"_blank\" rel=\"noopener\">State of WordPress Security in 2026 report<\/a>, Patchstack found that 91% of the new WordPress vulnerabilities it recorded in 2025 were in plugins and 9% in themes. A site whose files fail the ownership test stops receiving automatic plugin fixes and gets no email saying so. It is the same kind of silent failure as <a href=\"https:\/\/www.ahosting.net\/blog\/could-not-establish-a-secure-connection-to-wordpress-org\/\">the WordPress.org connection warning that stops update checks<\/a>, and it is found the same way: by reading Site Health rather than waiting for a symptom.<\/p>\n\n\n\n<h2 id=\"aioseo-how-to-tell-which-test-failed-without-writing-code\" class=\"wp-block-heading\">How to Tell Which Test Failed Without Writing Code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Diagnosing WordPress asking for FTP credentials needs no terminal. Three screens you already have answer it, and the order matters, because a constant in <code>wp-config.php<\/code> overrides everything the other two would tell you.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open <code>wp-config.php<\/code> in cPanel File Manager and search for <code>FS_METHOD<\/code> and <code>FTP_<\/code>. Any match is forcing the method before the tests run.<\/li>\n\n\n\n<li>In WordPress, go to Tools, then Site Health, then the Info tab, and open <em>Filesystem Permissions<\/em>. It lists the main WordPress directory, <code>wp-content<\/code>, uploads, plugins and themes as Writable or Not writable.<\/li>\n\n\n\n<li>On the cPanel home screen, read Disk Usage and File Usage together. Either one at its limit fails the first test even when every folder says Writable.<\/li>\n<\/ol>\n\n\n\n<h3 id=\"aioseo-reading-the-three-screens-together\" class=\"wp-block-heading\">Reading the Three Screens Together<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The detail that makes this work is what Site Health leaves out. Its Filesystem Permissions panel reports writability only; it never shows who owns anything. So a site that reads Writable everywhere, has room on the account and carries no constant, yet still shows the box, has narrowed the problem to the second test. A full account is the one trap in that logic, and <a href=\"https:\/\/www.ahosting.net\/blog\/wordpress-inode-limit-shared-hosting\/\">the file-count limit on shared hosting<\/a> is the version of it people miss.<\/p>\n\n\n\n<figure class=\"wp-block-table ah-ladder\"><table><thead><tr><th>wp-config.php<\/th><th>Site Health: wp-content<\/th><th>cPanel usage<\/th><th>Test that failed<\/th><th>Who fixes it<\/th><\/tr><\/thead><tbody><tr><td>FS_METHOD or FTP_ lines<\/td><td>Any<\/td><td>Any<\/td><td>Neither ran; a constant forced FTP<\/td><td>You<\/td><\/tr><tr><td>Clean<\/td><td>Not writable<\/td><td>Room left<\/td><td>Test 1: permissions<\/td><td>You, or the host if the folder is not yours<\/td><\/tr><tr><td>Clean<\/td><td>Writable<\/td><td>Disk or files full<\/td><td>Test 1: no room for the test file<\/td><td>You<\/td><\/tr><tr><td>Clean<\/td><td>Writable<\/td><td>Room left<\/td><td>Test 2: ownership mismatch<\/td><td>Your host<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">The AHosting FTP Prompt Decoder \u2014 four screens you already have, read against the WordPress 7.1.2 filesystem check. The last row is the one only a host can fix.<\/figcaption><\/figure>\n\n\n\n<style>\n.ahfp-tool{background:#0f172a;border-radius:10px;padding:22px;margin:26px 0;color:#fff;font-size:.95rem}\n.ahfp-tool h3{color:#fff;margin:0 0 6px;font-size:1.15rem}\n.ahfp-tool p.ahfp-sub{color:#eef3ff;margin:0 0 18px;font-size:.88rem}\n.ahfp-f{margin-bottom:14px}\n.ahfp-f label{display:block;color:#eef3ff;font-size:.8rem;margin-bottom:5px}\n.ahfp-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.ahfp-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.ahfp-out{margin-top:18px;padding:16px;background:#1e293b;border-left:4px solid #2563eb;border-radius:6px;display:none}\n.ahfp-out.ahfp-on{display:block}\n.ahfp-num{font-size:1.15rem;font-weight:700;color:#60a5fa;display:block;margin-bottom:8px}\n.ahfp-out p{margin:0 0 10px;color:#fff}\n.ahfp-out p strong{color:#93c5fd}\n.ahfp-note{color:#94a3b8;font-size:.78rem;margin-top:12px}\n<\/style>\n<div class=\"ahfp-tool\" data-ahfp=\"diagnoser\">\n  <h3>FTP Prompt Diagnoser<\/h3>\n  <p class=\"ahfp-sub\">Answer three questions from screens you already have: wp-config.php, Site Health and the cPanel home page. This tells you which of the two tests failed and who can fix it.<\/p>\n  <div class=\"ahfp-f\">\n    <label for=\"ahfp-cfg\">Does wp-config.php contain FS_METHOD, FTP_USER, FTP_PASS or FTP_HOST?<\/label>\n    <select id=\"ahfp-cfg\">\n      <option value=\"no\" selected>No, none of them<\/option>\n      <option value=\"yes\">Yes, at least one<\/option>\n    <\/select>\n  <\/div>\n  <div class=\"ahfp-f\">\n    <label for=\"ahfp-wr\">Tools, then Site Health, then Info, then Filesystem Permissions: what does the wp-content directory say?<\/label>\n    <select id=\"ahfp-wr\">\n      <option value=\"w\" selected>Writable<\/option>\n      <option value=\"nw\">Not writable<\/option>\n    <\/select>\n  <\/div>\n  <div class=\"ahfp-f\">\n    <label for=\"ahfp-q\">cPanel home screen: is Disk Usage or File Usage at its limit?<\/label>\n    <select id=\"ahfp-q\">\n      <option value=\"no\" selected>No, both have room<\/option>\n      <option value=\"yes\">Yes, one of them is full<\/option>\n    <\/select>\n  <\/div>\n  <button class=\"ahfp-btn wp-element-button\" id=\"ahfp-go\" type=\"button\">Find the failed test<\/button>\n  <div class=\"ahfp-out\" id=\"ahfp-out\">\n    <span class=\"ahfp-num\" id=\"ahfp-num\">&#8212;<\/span>\n    <p><strong>What is happening:<\/strong> <span id=\"ahfp-what\"><\/span><\/p>\n    <p><strong>Who can fix it:<\/strong> <span id=\"ahfp-who\"><\/span><\/p>\n    <p><strong>Do this next:<\/strong> <span id=\"ahfp-next\"><\/span><\/p>\n    <p class=\"ahfp-note\">Read from the WordPress 7.1.2 source. It cannot see your server, so treat the answer as where to start, not as a diagnosis.<\/p>\n  <\/div>\n<\/div>\n<script>\n(function(){\n  document.addEventListener('DOMContentLoaded', function(){\n    var tool = document.querySelector('[data-ahfp]');\n    if (!tool) { return; }\n    var mode = tool.getAttribute('data-ahfp');\n    if (mode !== 'diagnoser') { return; }\n    var go = document.getElementById('ahfp-go');\n    if (!go) { return; }\n    var out = document.getElementById('ahfp-out');\n    if (!out) { return; }\n    var num = document.getElementById('ahfp-num');\n    if (!num) { return; }\n    var what = document.getElementById('ahfp-what');\n    if (!what) { return; }\n    var who = document.getElementById('ahfp-who');\n    if (!who) { return; }\n    var next = document.getElementById('ahfp-next');\n    if (!next) { return; }\n    var HEAD = {};\n    HEAD['cfg'] = 'A constant is forcing the method';\n    HEAD['perm'] = 'Test 1 failed: permissions';\n    HEAD['quota'] = 'Test 1 failed: no room';\n    HEAD['owner'] = 'Test 2 failed: ownership';\n    var WHAT = {};\n    WHAT['cfg'] = 'WordPress reads FS_METHOD before it runs either test. A line left by a previous host, or FTP login constants, can force the FTP route on a server that does not need it.';\n    WHAT['perm'] = 'PHP cannot create the test file in wp-content, so WordPress never reaches the ownership comparison.';\n    WHAT['quota'] = 'The folder permissions are fine, which is why Site Health says Writable, but the account has no room for one more file, so the test file cannot be created.';\n    WHAT['owner'] = 'PHP can create the test file, but that file belongs to a different user than WordPress&#8217;s own core files. WordPress treats that as unsafe and falls back to FTP.';\n    var WHO = {};\n    WHO['cfg'] = 'You. Editing wp-config.php is within your account.';\n    WHO['perm'] = 'You, if the folder is yours and only its mode is wrong. Your host, if the folder belongs to another user.';\n    WHO['quota'] = 'You. Clearing old files, backups or cache frees the room the test needs.';\n    WHO['owner'] = 'Your host. Changing who owns a file needs privileges a hosting account does not have.';\n    var NEXT = {};\n    NEXT['cfg'] = 'Back up wp-config.php, remove the FS_METHOD and FTP_ lines, then reload the update screen. If the box returns, run this again with the answer changed to No.';\n    NEXT['perm'] = 'In cPanel File Manager, set wp-content to 755. If the permissions will not change, the folder is not yours: open a ticket.';\n    NEXT['quota'] = 'Free space or files until both meters have headroom, then retry the update.';\n    NEXT['owner'] = 'Open a ticket asking for the WordPress files to be returned to your account user. Do not add FS_METHOD while you wait.';\n    go.addEventListener('click', function(){\n      var cfg = document.getElementById('ahfp-cfg');\n      if (!cfg) { return; }\n      var wr = document.getElementById('ahfp-wr');\n      if (!wr) { return; }\n      var q = document.getElementById('ahfp-q');\n      if (!q) { return; }\n      var k = 'owner';\n      if (q.value === 'yes') { k = 'quota'; }\n      if (wr.value === 'nw') { k = 'perm'; }\n      if (cfg.value === 'yes') { k = 'cfg'; }\n      num.innerHTML = HEAD[k];\n      what.innerHTML = WHAT[k];\n      who.innerHTML = WHO[k];\n      next.innerHTML = NEXT[k];\n      out.className = 'ahfp-out ahfp-on';\n    });\n  });\n})();\n<\/script>\n\n\n\n<h2 id=\"aioseo-what-the-popular-fixes-for-wordpress-asking-for-ftp-credentials-actually-do\" class=\"wp-block-heading\">What the Popular Fixes for WordPress Asking for FTP Credentials Actually Do<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Search results for the box repeat three fixes almost word for word, and a fourth turns up in older forum threads. Read against the source, each one does something different from what it promises.<\/p>\n\n\n\n<figure class=\"wp-block-table ah-ladder\"><table><thead><tr><th>Popular fix<\/th><th>Box goes away<\/th><th>Background updates return<\/th><th>What it costs<\/th><\/tr><\/thead><tbody><tr><td>FS_METHOD set to direct<\/td><td>Yes<\/td><td>Only if the owners already matched<\/td><td>Writes files as whoever PHP runs as, and hides the mismatch<\/td><\/tr><tr><td>Hand the files to www-data or apache<\/td><td>Only where PHP runs as that user<\/td><td>Only on that kind of server<\/td><td>Creates the mismatch where PHP runs as your account<\/td><\/tr><tr><td>FTP_USER and FTP_PASS in wp-config.php<\/td><td>Yes<\/td><td>Yes, over FTP<\/td><td>Your FTP password in plain text, in a file PHP reads constantly<\/td><\/tr><tr><td>chmod 777 on wp-content<\/td><td>Only if test 1 was the problem<\/td><td>Only if test 1 was the problem<\/td><td>Every process on the server can write there<\/td><\/tr><tr><td>Correct the ownership<\/td><td>Yes<\/td><td>Yes<\/td><td>Nothing, but on shared hosting it takes your host<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Five fixes for the FTP credentials box, read against the WordPress 7.1.2 filesystem check.<\/figcaption><\/figure>\n\n\n\n<h3 id=\"aioseo-fs_method-set-to-direct\" class=\"wp-block-heading\">FS_METHOD Set to direct<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">It removes the box by deleting the question. If the owners already matched, the line was never needed. If they did not, WordPress now writes as the PHP user anyway: some writes fail with a less helpful error further along, and the rest create files the rightful owner may not be able to edit. Nothing about the mismatch changes, so the next person to read Site Health still finds it.<\/p>\n\n\n\n<h3 id=\"aioseo-handing-the-files-to-www-data\" class=\"wp-block-heading\">Handing the Files to www-data<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">That advice comes from servers where PHP runs as the web server\u2019s own user, so giving that user the files makes the owners match. Plenty of shared hosts run PHP as each customer\u2019s own account instead. There, handing the files to the web server user does not fix the mismatch. It creates one. On shared hosting you usually cannot run the command at all, which is a clue that the advice was written for a different kind of server.<\/p>\n\n\n\n<h3 id=\"aioseo-ftp_user-and-ftp_pass-in-wp-config-php\" class=\"wp-block-heading\">FTP_USER and FTP_PASS in wp-config.php<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This works, and it is the one to think hardest about. Your FTP password sits in plain text in a file PHP reads on every request, so any flaw that exposes that file exposes the password too. WordPress then logs in over FTP for every update. <a href=\"https:\/\/download.pureftpd.org\/pub\/pure-ftpd\/doc\/README.TLS\" target=\"_blank\" rel=\"noopener\">Pure-FTPd\u2019s own TLS documentation<\/a> spells out what encryption changes: with it, logins and passwords are no longer sent as cleartext. WordPress offers FTPS only when PHP\u2019s ftp extension is loaded; its fallback client has no encryption at all.<\/p>\n\n\n\n<h2 id=\"aioseo-what-you-can-fix-yourself-on-shared-hosting\" class=\"wp-block-heading\">What You Can Fix Yourself on Shared Hosting<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Most cases of WordPress asking for FTP credentials end here. Three of the four outcomes in the decoder are yours to fix, and none of them needs more than cPanel. Work through them in this order, because each one can hide the next.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Remove any <code>FS_METHOD<\/code>, <code>FTP_USER<\/code>, <code>FTP_PASS<\/code> or <code>FTP_HOST<\/code> line from <code>wp-config.php<\/code>, after saving a copy. Sites moved from another host often carry these for a server that needed them.<\/li>\n\n\n\n<li>Free room if Disk Usage or File Usage is at its limit: old backups, cache folders and unused plugins are the usual weight. The test file needs one free file slot.<\/li>\n\n\n\n<li>Put folder and file modes back to the defaults: 755 for folders and 644 for files, set with Change Permissions in File Manager. Never 777.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Those two numbers are not arbitrary. <a href=\"https:\/\/docs.redhat.com\/en\/documentation\/red_hat_enterprise_linux\/9\/html\/configuring_basic_system_settings\/managing-file-system-permissions_configuring-basic-system-settings\" target=\"_blank\" rel=\"noopener\">Red Hat\u2019s guide to file system permissions<\/a> shows that the default umask on RHEL-family systems, which include CloudLinux, is 0022, and that is what produces 755 folders and 644 files when an owner creates them. If File Manager refuses to change a mode, the file is not yours, and that is the moment to stop. Our <a href=\"https:\/\/www.ahosting.net\/faq\/web-hosting\/understanding-file-permissions-and-ownership.html\">knowledge base article on permissions and ownership<\/a> explains why no amount of chmod fixes a file someone else owns. The same distinction sits behind <a href=\"https:\/\/www.ahosting.net\/blog\/missing-a-temporary-folder\/\">the Missing a temporary folder upload error<\/a>, where the create step fails for reasons the error message never names.<\/p>\n\n\n\n<h2 id=\"aioseo-what-only-your-host-can-fix-and-why\" class=\"wp-block-heading\">What Only Your Host Can Fix, and Why<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If the decoder lands on the last row, ownership has to change, and that is not a policy choice on the host\u2019s part. The <a href=\"https:\/\/pubs.opengroup.org\/onlinepubs\/9799919799\/functions\/chown.html\" target=\"_blank\" rel=\"noopener\">POSIX specification for chown<\/a> allows only processes \u201cwith appropriate privileges\u201d to change a file\u2019s owner once restricted ownership is in effect, as it is on Linux. A hosting account does not have those privileges, and <a href=\"https:\/\/www.ahosting.net\/web-hosting.html\">on our shared web hosting plans<\/a> root access is not available, by design. So the one step that actually fixes a mismatch is the one step a customer cannot take.<\/p>\n\n\n\n<h3 id=\"aioseo-how-ahosting-servers-avoid-the-mismatch\" class=\"wp-block-heading\">How AHosting Servers Avoid the Mismatch<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">On our shared servers, LiteSpeed runs PHP through lsphp, and each PHP process runs as the site\u2019s own cPanel user. Files you upload, install or restore belong to that same user, so both tests pass and WordPress chooses <code>direct<\/code> without a constant. We checked rather than assumed. Asked directly, the filesystem method returned <code>direct<\/code> on our live WordPress plan sites with no <code>FS_METHOD<\/code> defined. A scan of all 530 docroots on one shared server found exactly two files owned by anyone other than the account, both one-off manual uploads. In twelve months of AHosting support tickets, not one customer has reported WordPress asking for FTP credentials.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On AHosting shared and <a href=\"https:\/\/www.ahosting.net\/wordpress-hosting.html\">WordPress hosting plans<\/a>, PHP already runs as your own cPanel user, so a correctly owned site never sees this box. If it does appear, ownership is the one part of the fix you cannot do yourself, because only a privileged user can change a file\u2019s owner. Open a ticket and we will look at it, before you edit <code>wp-config.php<\/code>.<\/p>\n\n\n\n<h2 id=\"aioseo-when-fs_method-set-to-direct-is-the-right-answer\" class=\"wp-block-heading\">When FS_METHOD Set to direct Is the Right Answer<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There is a place for the constant: a server where you decide which user PHP runs as and who owns every file. On <a href=\"https:\/\/www.ahosting.net\/vps-hosting.html\">a VPS with full root access<\/a>, a container, or a local development machine, you can make PHP and the files share one owner and then set <code>FS_METHOD<\/code> to <code>direct<\/code> knowing the check would have passed. That is a decision made with the facts in hand, not a way around them.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What does not justify a move is WordPress asking for FTP credentials on its own. A mismatch on shared hosting is a ticket, not a migration. Move when you need that control repeatedly: custom services, your own deploy tools, or a PHP user you choose yourself.<\/p>\n\n\n\n<h2 id=\"faq-wordpress-asking-for-ftp-credentials\" class=\"wp-block-heading\">Frequently Asked Questions: WordPress Asking for FTP Credentials<\/h2>\n\n\n\n<h3 id=\"faq-why-is-wordpress-asking-for-ftp-credentials-when-i-try-to-install-a-plugin\" class=\"wp-block-heading\">Why is WordPress asking for FTP credentials when I try to install a plugin?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In practice it means WordPress could not prove that it is safe to write files directly. Before any install or update, it creates a small test file in the folder it is about to change, then compares the owner of that new file with the owner of its own core files. If the file cannot be created, or the two owners differ, WordPress falls back to FTP and asks you for a login. The box is the result of a failed ownership or write test, not a request for a missing password.<\/p>\n\n\n\n<h3 id=\"faq-is-fs-method-direct-a-safe-fix-for-wordpress-asking-for-ftp-credentials-in-2026\" class=\"wp-block-heading\">Is FS_METHOD direct a safe fix for WordPress asking for FTP credentials in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Typically it hides the problem rather than fixing it. Setting FS_METHOD to direct in wp-config.php makes WordPress skip both of its tests and write files as whatever user PHP runs as. If the tests were failing because the owners differ, the writes then either fail with a new error or create files owned by the wrong user. On a server where PHP runs as your own account and your files are yours, the tests already pass and the line is unnecessary. In WordPress 7.1.2 the logic is unchanged.<\/p>\n\n\n\n<h3 id=\"faq-fs-method-direct-vs-fixing-file-ownership-which-stops-wordpress-asking-for-ftp-credentials\" class=\"wp-block-heading\">FS_METHOD direct vs fixing file ownership: which stops WordPress asking for FTP credentials?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Above all, fixing ownership, because only that removes the reason the box appeared. FS_METHOD direct tells WordPress to stop checking. Correcting the owner, so that the WordPress files belong to the same user PHP runs as, makes the check pass on its own, and it also brings back automatic background updates, which the same failed check had switched off. The constant leaves the mismatch in place for the next plugin, theme or core update to trip over.<\/p>\n\n\n\n<h3 id=\"faq-ftp-vs-ftps-in-the-wordpress-connection-information-box-is-the-password-encrypted\" class=\"wp-block-heading\">FTP vs FTPS in the WordPress Connection Information box: is the password encrypted?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In particular, only if you choose FTPS and the server can actually offer it. WordPress shows the FTPS option only when the PHP ftp extension is loaded, because its fallback FTP client has no encryption at all. Plain FTP sends the login and password across the network as readable text. On AHosting servers the ftp and openssl extensions are both loaded, so FTPS is genuinely available, but a correctly owned site on our servers should never show the box in the first place.<\/p>\n\n\n\n<h3 id=\"faq-what-causes-wordpress-asking-for-ftp-credentials-after-moving-a-site-to-ahosting\" class=\"wp-block-heading\">What causes WordPress asking for FTP credentials after moving a site to AHosting?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Typically a line in wp-config.php that the previous host needed and this one does not. Some hosts run PHP as a shared web server user, so their sites carry FS_METHOD set to ftpext or FTP_USER and FTP_PASS lines to force updates over FTP. Copied across unchanged, those lines force the box on a server that does not need it. Remove them first. If the box stays, check for files a restore or copy left owned by another user, which only support can change.<\/p>\n\n\n\n<h3 id=\"faq-why-do-i-see-wordpress-asking-for-ftp-credentials-when-site-health-says-writable\" class=\"wp-block-heading\">Why do I see WordPress asking for FTP credentials when Site Health says Writable?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Specifically because Site Health reports only whether each folder is writable, never who owns the files inside it. WordPress passes its first test, creating a file, and fails the second, comparing owners. That combination points at ownership. One exception is worth ruling out first: an account at its disk or file limit can still show Writable, because the folder permissions are fine even though no new file fits. Check Disk Usage and File Usage in cPanel before you conclude it is ownership.<\/p>\n\n\n\n<h3 id=\"faq-does-wordpress-store-the-ftp-username-and-password-typed-into-the-connection-information-box\" class=\"wp-block-heading\">Does WordPress store the FTP username and password typed into the Connection Information box?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">In fact only partly. WordPress saves the hostname and username in its options table so the form is prefilled next time, and it deliberately leaves out the password, the port and any SSH keys. The password is used for that one request and not kept. That is a real difference from typing the same password into wp-config.php as FTP_PASS, which stores it permanently as plain text in a file that PHP reads on every page load.<\/p>\n\n\n\n<h3 id=\"faq-why-does-site-health-report-background-updates-not-working-as-expected-in-2026\" class=\"wp-block-heading\">Why does Site Health report background updates not working as expected in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Notably, the same check that produces the FTP box is a common cause. Site Health runs the filesystem test itself, and when it fails the Background updates item turns critical with a note that the site is performing updates over FTP due to file ownership, telling you to talk to your hosting company. Automatic core updates then stop and WordPress emails the admin instead. Plugin and theme auto updates stop too, and those send no email at all.<\/p>\n\n\n\n<h3 id=\"faq-can-ahosting-support-fix-wordpress-asking-for-ftp-credentials-on-a-cagefs-account\" class=\"wp-block-heading\">Can AHosting support fix WordPress asking for FTP credentials on a CageFS account?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Indeed it can, and ownership is the part only support can do, because changing who owns a file needs privileges no customer account has. On AHosting shared and WordPress plans PHP already runs as your own cPanel user, so a correctly owned site never sees the box. When we scanned every docroot on one of our shared servers, only two files across 530 docroots belonged to anyone else. If you do see it, open a ticket and we will look at it, before you edit wp-config.php.<\/p>\n\n\n\n<h3 id=\"faq-should-i-move-to-an-ahosting-vps-to-stop-wordpress-asking-for-ftp-credentials-in-2026\" class=\"wp-block-heading\">Should I move to an AHosting VPS to stop WordPress asking for FTP credentials in 2026?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ultimately no, not for this reason alone. WordPress asking for FTP credentials is caused by a file ownership mismatch, and on shared hosting that is a ticket, not a migration. A VPS makes sense when you need control you will use again and again: choosing which user PHP runs as, owning the whole file tree with root access, and running your own deploy tools. On a VPS you can also set FS_METHOD to direct safely, because you decide who the PHP user is.<\/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 WordPress asking for FTP credentials means one of two tests failed: it could not create a test file in the folder it wants to change, or that new file did not belong to the same user as WordPress&#8217;s own files. It is an ownership check, not a missing password. The popular FS_METHOD fix only [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1355,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[8],"tags":[60,66,110,276,299,113,138,117,288,239],"class_list":["post-1354","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress","tag-cloudlinux","tag-cpanel","tag-shared-hosting","tag-site-health","tag-wordpress-asking-for-ftp-credentials","tag-wordpress-errors","tag-wordpress-security","tag-wordpress-troubleshooting","tag-wordpress-updates","tag-wp-config"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"WordPress asking for FTP credentials? It ran two file-ownership tests and one failed. Find which in two minutes, and why FS_METHOD direct is not the fix.\" \/>\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\/wordpress-asking-for-ftp-credentials\/\" \/>\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=\"WordPress Asking for FTP Credentials: Real Fix | AHosting\" \/>\n\t\t<meta property=\"og:description\" content=\"WordPress asking for FTP credentials? It ran two file-ownership tests and one failed. Find which in two minutes, and why FS_METHOD direct is not the fix.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/wordpress-asking-for-ftp-credentials-ahosting.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/wordpress-asking-for-ftp-credentials-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-01T16:22:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-01T20:56:18+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=\"WordPress Asking for FTP Credentials: Real Fix | AHosting\" \/>\n\t\t<meta name=\"twitter:description\" content=\"WordPress asking for FTP credentials? It ran two file-ownership tests and one failed. Find which in two minutes, and why FS_METHOD direct is not the fix.\" \/>\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\/wordpress-asking-for-ftp-credentials-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\\\/wordpress-asking-for-ftp-credentials\\\/#article\",\"name\":\"WordPress Asking for FTP Credentials: Real Fix | AHosting\",\"headline\":\"WordPress Asking for FTP Credentials? It&#8217;s a File-Owner Check, Not a Password Problem\",\"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\\\/wordpress-asking-for-ftp-credentials-ahosting.jpg\",\"width\":1200,\"height\":675,\"caption\":\"WordPress asks for FTP details when one of two file tests fails. FS_METHOD switches the tests off; it does not make them pass.\"},\"datePublished\":\"2026-10-01T16:22:22+00:00\",\"dateModified\":\"2026-10-01T20:56:18+00:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wordpress-asking-for-ftp-credentials\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wordpress-asking-for-ftp-credentials\\\/#webpage\"},\"articleSection\":\"WordPress, CloudLinux, cPanel, Shared Hosting, Site Health, wordpress asking for ftp credentials, WordPress errors, wordpress security, WordPress troubleshooting, WordPress updates, wp-config\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wordpress-asking-for-ftp-credentials\\\/#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\\\/wordpress-asking-for-ftp-credentials\\\/#listItem\",\"name\":\"WordPress Asking for FTP Credentials? It&#8217;s a File-Owner Check, Not a Password Problem\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wordpress-asking-for-ftp-credentials\\\/#listItem\",\"position\":3,\"name\":\"WordPress Asking for FTP Credentials? It&#8217;s a File-Owner Check, Not a Password Problem\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/category\\\/wordpress\\\/#listItem\",\"name\":\"WordPress\"},\"item\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wordpress-asking-for-ftp-credentials\\\/\"}]},{\"@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\\\/wordpress-asking-for-ftp-credentials\\\/#organizationLogo\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wordpress-asking-for-ftp-credentials\\\/#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\\\/wordpress-asking-for-ftp-credentials\\\/#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\\\/wordpress-asking-for-ftp-credentials\\\/#webpage\",\"url\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wordpress-asking-for-ftp-credentials\\\/\",\"name\":\"WordPress Asking for FTP Credentials: Real Fix | AHosting\",\"description\":\"WordPress asking for FTP credentials? It ran two file-ownership tests and one failed. Find which in two minutes, and why FS_METHOD direct is not the fix.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wordpress-asking-for-ftp-credentials\\\/#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\\\/wordpress-asking-for-ftp-credentials-ahosting.jpg\",\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wordpress-asking-for-ftp-credentials\\\/#mainImage\",\"width\":1200,\"height\":675,\"caption\":\"WordPress asks for FTP details when one of two file tests fails. FS_METHOD switches the tests off; it does not make them pass.\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.ahosting.net\\\/blog\\\/wordpress-asking-for-ftp-credentials\\\/#mainImage\"},\"datePublished\":\"2026-10-01T16:22:22+00:00\",\"dateModified\":\"2026-10-01T20:56:18+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":"WordPress Asking for FTP Credentials: Real Fix | AHosting","description":"WordPress asking for FTP credentials? It ran two file-ownership tests and one failed. Find which in two minutes, and why FS_METHOD direct is not the fix.","canonical_url":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/","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\/wordpress-asking-for-ftp-credentials\/#article","name":"WordPress Asking for FTP Credentials: Real Fix | AHosting","headline":"WordPress Asking for FTP Credentials? It&#8217;s a File-Owner Check, Not a Password Problem","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\/wordpress-asking-for-ftp-credentials-ahosting.jpg","width":1200,"height":675,"caption":"WordPress asks for FTP details when one of two file tests fails. FS_METHOD switches the tests off; it does not make them pass."},"datePublished":"2026-10-01T16:22:22+00:00","dateModified":"2026-10-01T20:56:18+00:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/#webpage"},"isPartOf":{"@id":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/#webpage"},"articleSection":"WordPress, CloudLinux, cPanel, Shared Hosting, Site Health, wordpress asking for ftp credentials, WordPress errors, wordpress security, WordPress troubleshooting, WordPress updates, wp-config"},{"@type":"BreadcrumbList","@id":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/#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\/wordpress-asking-for-ftp-credentials\/#listItem","name":"WordPress Asking for FTP Credentials? It&#8217;s a File-Owner Check, Not a Password Problem"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/#listItem","position":3,"name":"WordPress Asking for FTP Credentials? It&#8217;s a File-Owner Check, Not a Password Problem","previousItem":{"@type":"ListItem","@id":"https:\/\/www.ahosting.net\/blog\/category\/wordpress\/#listItem","name":"WordPress"},"item":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/"}]},{"@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\/wordpress-asking-for-ftp-credentials\/#organizationLogo"},"image":{"@id":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/#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\/wordpress-asking-for-ftp-credentials\/#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\/wordpress-asking-for-ftp-credentials\/#webpage","url":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/","name":"WordPress Asking for FTP Credentials: Real Fix | AHosting","description":"WordPress asking for FTP credentials? It ran two file-ownership tests and one failed. Find which in two minutes, and why FS_METHOD direct is not the fix.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.ahosting.net\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/#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\/wordpress-asking-for-ftp-credentials-ahosting.jpg","@id":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/#mainImage","width":1200,"height":675,"caption":"WordPress asks for FTP details when one of two file tests fails. FS_METHOD switches the tests off; it does not make them pass."},"primaryImageOfPage":{"@id":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/#mainImage"},"datePublished":"2026-10-01T16:22:22+00:00","dateModified":"2026-10-01T20:56:18+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":"WordPress Asking for FTP Credentials: Real Fix | AHosting","og:description":"WordPress asking for FTP credentials? It ran two file-ownership tests and one failed. Find which in two minutes, and why FS_METHOD direct is not the fix.","og:url":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/","og:image":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/wordpress-asking-for-ftp-credentials-ahosting.jpg","og:image:secure_url":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/wordpress-asking-for-ftp-credentials-ahosting.jpg","og:image:width":1200,"og:image:height":675,"article:published_time":"2026-10-01T16:22:22+00:00","article:modified_time":"2026-10-01T20:56:18+00:00","twitter:card":"summary_large_image","twitter:site":"@ahostingdotnet","twitter:title":"WordPress Asking for FTP Credentials: Real Fix | AHosting","twitter:description":"WordPress asking for FTP credentials? It ran two file-ownership tests and one failed. Find which in two minutes, and why FS_METHOD direct is not the fix.","twitter:creator":"@ahostingdotnet","twitter:image":"https:\/\/www.ahosting.net\/blog\/wp-content\/uploads\/2026\/10\/wordpress-asking-for-ftp-credentials-ahosting.jpg"},"aioseo_meta_data":{"post_id":"1354","title":"WordPress Asking for FTP Credentials: Real Fix | AHosting","description":"WordPress asking for FTP credentials? It ran two file-ownership tests and one failed. Find which in two minutes, and why FS_METHOD direct is not the fix.","keywords":null,"keyphrases":{"focus":{"keyphrase":"wordpress asking for ftp credentials","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-01 16:16:05","updated":"2026-10-01 20:57:25","seo_analyzer_scan_date":null,"focus_keyword":"wordpress asking for ftp credentials","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\tWordPress Asking for FTP Credentials? It\u2019s a File-Owner Check, Not a Password Problem\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":"WordPress Asking for FTP Credentials? It&#8217;s a File-Owner Check, Not a Password Problem","link":"https:\/\/www.ahosting.net\/blog\/wordpress-asking-for-ftp-credentials\/"}],"_links":{"self":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/1354","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=1354"}],"version-history":[{"count":3,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/1354\/revisions"}],"predecessor-version":[{"id":1364,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/posts\/1354\/revisions\/1364"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/media\/1355"}],"wp:attachment":[{"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/media?parent=1354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/categories?post=1354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ahosting.net\/blog\/wp-json\/wp\/v2\/tags?post=1354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}