A WordPress site that was moved to a new vhost directory needs two separate checks: the active web-server configuration must point to the new document root, and the account running PHP must be able to traverse and read the moved files while writing only to the directories WordPress requires. Correct Unix modes alone cannot fix a vhost or PHP-FPM process that still references the old path.
Antihost offers managed WordPress hosting with free migration, one-click staging and a 14-day free trial.
Back up the site and database first. Then verify the vhost, identify the real PHP/web-server account, inspect every directory in the path, apply least-privilege ownership and modes, and test uploads and updates. Do not make the whole tree world-writable or assume the service account is www-data.
As an Amazon Associate I earn from qualifying purchases.
Why a move can look like a permissions failure
Moving /var/www/site-old to /var/www/site-new changes more than file locations. Apache may still have the old DocumentRoot, Nginx may still use an old root, or PHP-FPM may still map scripts through a stale SCRIPT_FILENAME. In those cases the browser can show an apparently functioning page from one tree while WordPress writes to, or tries to load, another.
A second problem is Unix traversal. A process needs execute permission on every parent directory, not just on the final file. The PHP account might be able to read wp-config.php but be blocked by a parent directory, an ACL, SELinux or AppArmor policy, or a hosting isolation rule. Treat path mapping and filesystem access as separate tests.
#1 Best Overall
- [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
- [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
- [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
- [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
- [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.
Back up and record the current state
Before changing ownership, modes, ACLs or server configuration, make a restorable copy of the WordPress directory, uploads, plugins, themes, other site files and the database. Keep a record of the old document root, the new document root, the active PHP-FPM pool, current owners and groups, and any custom ACL or security policy. A migration is not complete until you can restore both the files and the database.
If the site uses a hosting control panel, managed WordPress service, container platform or provider-specific repair tool, check its documented execution model first. A provider may deliberately prevent direct ownership changes, and an apparently successful chown can break the control panel’s deployment or backup process.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsStep 1: prove that the active vhost uses the new directory
Apache
Inspect the enabled virtual host and confirm that its DocumentRoot is the moved directory. Check directory access rules, the PHP handler or proxy target, and any rewrite configuration. Reload Apache only after validating the syntax. If multiple vhosts share a hostname, IP address or wildcard, verify which one wins for the request you are testing.
Nginx
Confirm the active server block’s root and the PHP location’s upstream socket or address. Check that the FastCGI parameters, especially SCRIPT_FILENAME, are built from the new root rather than a hard-coded old path. Nginx does not read .htaccess; rewrite rules belong in the server configuration.
PHP-FPM
Identify the pool serving this site and check its user, group, socket permissions and any path restrictions. A pool can run under a per-site account instead of a distribution-wide account. Confirm that the socket referenced by the web server belongs to the pool you inspected, then reload the appropriate services and watch the error log while making a request.
Rank #2
- 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
- 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
- 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
- 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
- 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.
Use a harmless diagnostic page or the site’s existing entry point to confirm the resolved document root, but remove diagnostic files immediately. Do not leave a page that exposes PHP configuration or filesystem paths on a public site.
Step 2: identify the account that actually runs WordPress
Never select an owner from a tutorial without checking your host. Depending on the deployment, PHP may run as a shared web account, a dedicated PHP-FPM pool user, the same account that deploys files, or a numeric user inside a container. The correct account is the one that must read PHP files and write the explicitly required WordPress paths.
- Inspect the PHP-FPM pool configuration and its service status.
- Check the web-server worker account and the permissions of the PHP-FPM socket.
- For containers, compare the service UID/GID with the ownership of the mounted volume.
- For shared hosting, use the provider’s account and filesystem documentation rather than changing system ownership.
WordPress permissions are host-dependent. A web process that owns every file makes code tampering easier, while a PHP account with no write access to uploads causes media and update failures. A common safer arrangement is a site-maintainer or deployment account owning the code, the PHP account receiving read and traversal access, and only required content paths receiving write access.
Step 3: inspect the complete path, owners, modes and ACLs
Check the moved directory, each parent directory, wp-content, uploads, plugins, themes and any directory where the application must create files. On Linux, directory execute permission means “may traverse and access entries”; it is not the same as read permission, which controls listing names.
SITE_ROOT=/var/www/example.com
namei -l "$SITE_ROOT/wp-content/uploads"
stat -c '%A %a %U:%G %n' "$SITE_ROOT" "$SITE_ROOT/wp-content" "$SITE_ROOT/wp-content/uploads"
getfacl -p "$SITE_ROOT" "$SITE_ROOT/wp-content" "$SITE_ROOT/wp-content/uploads"
These commands are inspections, not a universal repair. Look for a parent directory that denies traversal, an unexpected owner or group, a restrictive ACL, or a security policy denial. If modes appear correct but the log reports “permission denied,” check the host’s SELinux or AppArmor rules and audit logs. Containers and hosting isolation can impose restrictions that ordinary mode bits do not show.
Recommended Free Tools
Rank #3
- [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
- [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
- [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
- [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
- [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by
Step 4: choose an ownership model before changing anything
The right repair depends on how PHP executes and who deploys the site. Use this decision table to avoid copying a command from a different environment.
| Execution model | Who should own code | PHP access | Where writes normally belong | Typical repair |
|---|---|---|---|---|
| Single system user running deployment and PHP | The site account | That same account | wp-content paths required by the workflow |
Keep ownership consistent; use restrictive file and directory modes. |
| Per-site PHP-FPM pool | Deployment or site-maintainer account | Pool user through a group or ACL | Uploads and other explicitly enabled content directories | Grant read/traverse broadly enough for the pool and narrowly scoped write access. |
| Shared hosting | Hosting account defined by the provider | Provider-controlled handler | Panel-supported WordPress directories | Use the provider’s repair procedure or support; do not assume a system account. |
| Containerized WordPress | Image or deployment UID/GID | Container service user | Persistent content volume | Match volume ownership or ACLs to the container UID and keep application code read-only where practical. |
If you cannot identify the execution model, stop before changing ownership. A wrong recursive ownership change can prevent both the administrator and the web process from working.
Step 5: apply a least-privilege mode baseline
WordPress hardening guidance commonly uses directories at 755 and regular files at 644. These values allow traversal and reading without making files writable by everyone. They are a baseline, not a guarantee that every host or plugin will work without additional, narrower adjustments.
After a backup and review, a controlled baseline can be applied to ordinary directories and files:
SITE_ROOT=/var/www/example.com
find "$SITE_ROOT" -type d -exec chmod 755 {} +
find "$SITE_ROOT" -type f -exec chmod 644 {} +
Do not run a blanket command over mounted volumes, sockets, private keys or application-specific files without checking what is present. Preserve special permissions where the host requires them. If the site uses ACLs, changing the traditional mode bits may not remove an inherited ACL that still grants or denies access.
Rank #4
- Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
- Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
- All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
- Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
- Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.
Give WordPress write access only where required
Most installations need PHP to create files under wp-content/uploads. Some update workflows also need temporary access to plugins, themes or other content directories. Grant write access to the PHP account through the documented group, ACL or ownership arrangement for that host. Avoid making the entire WordPress tree writable when only uploads need it.
For a group-based design, verify that the deployment account and PHP account share the intended group, that directories have the group execute bit, and that newly created files inherit the group when necessary. For an ACL-based design, grant the PHP account access only to the required paths and set a default ACL if new uploads must inherit it. The exact account and group names are installation-specific, so substitute the values confirmed in Step 2 rather than using a copied distribution default.
Why 777 is not a fix
Mode 777 makes files or directories writable by every local user and by the web process. If a plugin, request or compromised process is abused, world-writable code expands the damage and can allow unauthorized modification by other local accounts. It may hide the original ownership or traversal problem, but it is not a durable repair. If temporarily testing a permission hypothesis, revert immediately and record what specific access was actually needed.
Handle .htaccess only on Apache
Apache permalink rules may require WordPress to update .htaccess when rewrite settings change. If that is part of the site’s normal workflow, give the PHP account write access to that single file or use a deployment process that writes it safely. Keep the rest of the code protected.
Nginx does not use .htaccess for rewrites. Creating or changing one will not repair an Nginx permalink problem; put the equivalent rules in the active server block and reload Nginx after a syntax check.
Best Value
Check WordPress’s file-mode constants
WordPress can override default modes for newly created directories and files through FS_CHMOD_DIR and FS_CHMOD_FILE in wp-config.php. Review these constants if new uploads or plugin files receive modes that differ from the baseline. Keep the values aligned with the host’s ownership and group strategy; changing them cannot compensate for a PHP account that lacks traversal or write permission.
Test the repaired installation in a controlled order
- Test the public site. Load several front-end URLs and confirm that images, CSS and JavaScript come from the new location.
- Test the dashboard. Sign in to
/wp-adminand watch the PHP and web-server logs while loading the media and updates screens. - Upload one harmless image. Confirm that WordPress creates the expected year/month directory and that the file is readable by the web server.
- Run a controlled update. Update a plugin or theme only if that operation is part of the site’s normal workflow and you have a current backup. Confirm that temporary files are removed afterward.
- Check generated files. Verify owners, groups and modes on the new upload or update files instead of assuming inheritance worked.
- Verify URLs and redirects. Search for old absolute paths or hostnames in configuration and database-managed settings, then test canonical redirects, media URLs and administrative links.
- Remove migration settings. If
RELOCATEwas added towp-config.phpduring the move, remove it after the correct site URL is saved. Leaving it enabled is insecure.
A successful front page does not prove that writes work. The upload and controlled-update tests exercise the permissions that visitors never touch.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Diagnose common symptoms without widening permissions
| Symptom | Likely cause | Next check |
|---|---|---|
| Site serves an old version after the move | Active vhost or cache still points to the old tree | Confirm the selected Apache virtual host or Nginx server block, PHP mapping and cache contents. |
| Front end loads but media upload fails | PHP lacks write access to uploads, or a parent directory blocks traversal | Inspect every parent with namei, then check the upload directory’s owner, group, ACL and security policy. |
| Plugin update asks for FTP credentials | WordPress cannot write through the configured filesystem method | Identify the PHP account and grant narrowly scoped access to the update paths, or use the host’s supported deployment method. |
| New files have unexpected modes | FS_CHMOD_DIR, FS_CHMOD_FILE, umask or default ACLs override the baseline |
Review wp-config.php, the PHP-FPM umask and ACL inheritance. |
| Apache permalinks fail after migration | Missing or unwritable .htaccess, incorrect rewrite rules, or the wrong document root |
Check Apache rewrite configuration and grant file-specific write access only if required. |
Nginx ignores .htaccess changes |
Nginx does not process that file | Fix the active Nginx server block and reload it after validation. |
| Modes look correct but access is denied | ACL, SELinux, AppArmor, container isolation or provider policy | Inspect audit logs and host documentation rather than switching to 777. |
When ownership changes are the wrong repair
On managed hosting, the provider may use an isolated PHP user, immutable deployment directory or control-panel metadata. Changing ownership manually can break backups, updates or future migrations. Ask support which account executes PHP, which paths are intended to be writable, and whether the provider supplies a permission-reset or migration tool.
On containers, changing names such as www-data inside the host may have no effect if the container runs under a numeric UID. Inspect the container’s effective UID/GID and the mounted volume’s ownership. Keep code in the image or a read-only mount when possible, and persist only uploads and other data that must survive replacement.
Security modules also matter. A mode change cannot authorize a path that SELinux labels deny, and AppArmor can reject access even when Unix permissions grant it. Correct the policy or label according to the host’s documented method, then repeat the upload test.
Migration cleanup checklist
- The database and all WordPress files have a verified backup.
- The active Apache or Nginx configuration points to the new document root.
- The PHP-FPM socket, pool and script path mapping match that root.
- The actual PHP/web-server account is documented.
- Every parent directory grants required traversal permission.
- Code ownership belongs to the maintainer or deployment model, not automatically to the web process.
- Directories and files use a reviewed least-privilege baseline, commonly
755and644. - Only required content paths are writable by PHP.
.htaccessis handled only when Apache needs it.- ACLs, SELinux/AppArmor and container or hosting isolation have been checked where applicable.
FS_CHMOD_DIRandFS_CHMOD_FILEhave been reviewed.- Front-end, dashboard, upload and controlled-update tests pass.
- Old URLs, temporary migration settings and
RELOCATEhave been removed or corrected.
The practical rule
Fix the path first, then fix access. Point the active vhost and PHP handler at the moved directory, identify the account that truly runs WordPress, grant it traversal and read access to the code, and give it write access only to the content locations the site’s workflow requires. That approach resolves genuine permission failures without turning the entire WordPress installation into a world-writable target.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




