iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
Antihost offers Linux VPS plans with full root access, unlimited traffic on a 1 Gbps port and a 14-day free trial.
When PHP-FPM will not restart, the generic systemd message is only a symptom. Identify the exact PHP-FPM unit and binary, read the first concrete error in the boot journal, run that binary’s configuration test, then correct the named listener, permission, configuration, or runtime-file problem. Finish by checking the service, socket, and a local PHP request before troubleshooting the web server.
Start by identifying the unit and PHP version
Package names and systemd unit names differ by distribution and installed PHP version. A Debian or Ubuntu host may expose a versioned unit such as php8.2-fpm.service, while another distribution may use php-fpm.service. Do not substitute a guessed name in later commands.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →- List installed FPM units:
systemctl list-unit-files | grep -E 'php.*fpm|fpm.*php' - Find the available FPM binaries:
command -v php-fpm php-fpm8.1 php-fpm8.2 php-fpm8.3 2>/dev/null - Inspect the selected unit, including its startup arguments:
sudo systemctl cat <php-fpm-unit>
The upstream service template starts FPM in the foreground with --nodaemonize and supplies an explicit --fpm-config path. Read the unit so your configuration test uses the same configuration file and binary rather than a different PHP installation. See the upstream PHP-FPM service template.
Read the first useful error, not “restart failed”
Systemd’s summary often hides the line that explains the failure. Check the current state and the messages recorded during this boot:
#1 Best Overall
- Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
- With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
- Wide Application:Upgraded attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
- Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
- Warranty & Support: Our Electric air duster comes with 5 years warranty and 24/7 customer service. During this period, if you have any questions,pls kindly feel free to contact us.
sudo systemctl status <php-fpm-unit> --no-pager
sudo journalctl -u <php-fpm-unit> -b --no-pager -n 100
Start with the earliest specific error in the sequence. Messages about a malformed directive, an occupied address, an inaccessible log, or a missing directory point to different fixes. Later “control process exited with error code” lines merely report that FPM stopped after the earlier failure.
Run the matching PHP-FPM configuration test
Before attempting another restart, test the configuration with the exact binary used by the unit:
Do these 3 things before closing this tab:
1Clear out junk files and repair common Windows errors2Fix the driver behind crashes, sound loss and screen glitches3Repair Windows errors before they cause bigger problemssudo php-fpm -t
# or a versioned Debian/Ubuntu binary
sudo php-fpm8.2 -t
If the unit specifies a non-default file with --fpm-config, pass that file explicitly when supported by your binary, or invoke the same command shown in the unit’s ExecStart. A successful test means the files can be parsed; it does not prove that the socket can be created or that the web server can access it.
FPM has a global configuration and one or more pool files using PHP-style php.ini syntax. A missing include, misspelled directive, malformed value, or pool without a valid section can make the master exit before it binds a listener. Correct the file and line named by -t, run the test again, and only then restart.
Keep vendor-managed files intact where possible. Put local service changes in an override created with sudo systemctl edit <php-fpm-unit> instead of editing the package unit in place; package upgrades can replace vendor files. The service template’s recommended override approach is documented in the PHP source tree.
Fix the common startup failures
Duplicate listen endpoints: “Address already in use”
Every FPM pool must bind a unique endpoint. Two pools cannot claim the same Unix socket, and two services cannot claim the same TCP address and port. Search every pool configuration and inspect live listeners:
Rank #2
- Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
- Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
- Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
- Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
- Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
sudo grep -RIn '^s*listens*=' /etc/php* /etc/php-fpm* 2>/dev/null
sudo ss -ltnp
sudo ss -xlpn | grep -i php
ps -ef | grep '[p]hp-fpm'
Compare the paths or address-port pairs shown in the pool files with the processes shown by ss. Typical causes are an accidentally duplicated pool file, two PHP versions enabled at once, or an old master that did not stop cleanly. Give each intended pool a distinct socket or TCP port, disable the unintended pool, or stop the conflicting service through systemd. The listen-address troubleshooting reference describes duplicate pool listeners as a direct startup failure and uses the same configuration, process, and socket checks.
Do not kill a process merely because its name contains php-fpm. First identify its unit with systemctl status and confirm which endpoint it owns. Prefer systemctl stop or systemctl restart; manually terminate a process only after confirming it is the conflicting instance.
Socket path mismatch or permission denied
For a Unix socket, three FPM pool directives control access: listen.owner, listen.group, and listen.mode. The PHP manual documents a default mode of 0660 when these values are not overridden. Set the owner and group to an account the web server actually uses, and choose a mode that grants that account access without making the socket public. The directive definitions are in the PHP-FPM configuration manual.
Compare the configured endpoint, the web server’s FastCGI target, and the live filesystem object:
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →# FPM pool settings
sudo grep -RInE '^s*listens*=|^s*listen.(owner|group|mode)s*=' /etc/php* /etc/php-fpm* 2>/dev/null
# Nginx, Apache, or httpd FastCGI target
sudo grep -RInE 'fastcgi_pass|SetHandler|ProxyPassMatch' /etc/nginx /etc/apache2 /etc/httpd 2>/dev/null
# Socket and parent-directory permissions
ls -l /run/php /run/php-fpm 2>/dev/null
namei -l /run/php/php-fpm.sock 2>/dev/null
The web server’s target must exactly equal the pool’s listen value, including the directory and filename. A socket can exist yet still produce “permission denied” if one parent directory blocks traversal or the socket group is wrong. Correct the pool settings, restart FPM, and re-check the resulting owner, group, and mode.
Missing runtime directory after boot
Directories under /run are temporary and are commonly recreated at boot. If the parent directory for the configured socket or PID file is absent, FPM cannot create its runtime files. Restore the distribution’s package-provided tmpfiles or runtime-directory mechanism rather than permanently creating a world-writable directory. If you must recreate it during diagnosis, use the service user, group, and mode specified by the package, then make the arrangement persistent through the package’s documented mechanism.
Rank #3
- 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
- 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
- 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
- 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
- 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
Check both the directory and the complete path:
ls -ld /run/php /run/php-fpm 2>/dev/null
namei -l /run/php/php-fpm.sock 2>/dev/null
PID-file, error-log, disk, and inode failures
Errors such as “unable to write PID file,” “cannot open error log,” “No space left on device,” and “Permission denied” identify a filesystem prerequisite rather than a PHP script problem. Inspect capacity, inodes, parent directories, and the paths named by the global pid and error_log directives:
df -h
df -i
sudo grep -RInE '^s*(pid|error_log)s*=' /etc/php* /etc/php-fpm* 2>/dev/null
namei -l /path/from/the/error
Free space or inodes when necessary, create missing parent directories with the package’s service account and restrictive permissions, and correct ownership on an existing file. Avoid broad permission changes such as chmod 777; they can hide the real ownership problem and expose logs or sockets.
Stale or conflicting masters
A failed stop can leave an older master process running, or a second PHP version may have been started outside systemd. Confirm the active unit, process command lines, and listeners before taking action:
sudo systemctl status <php-fpm-unit> --no-pager
ps -ef | grep '[p]hp-fpm'
sudo ss -xlpn | grep -i php
Once the owning unit is known, stop that unit cleanly. If the process has no valid unit, record its command line and configuration path, then terminate only that identified process before starting the intended service. A stale master that still owns the configured socket explains why a new master cannot bind.
Make systemd recognize unit and socket changes
Editing a .service or .socket file does not automatically refresh systemd’s loaded unit definitions. Run:
sudo systemctl daemon-reload
sudo systemctl restart <php-fpm-unit>
Use daemon-reload after changing a drop-in created with systemctl edit, a vendor unit copy, or a socket unit. Without it, systemd may continue using the previous command, dependency, or listener.
Rank #4
- 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
- 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
- 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
- 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
- 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.
When socket activation is configured
Some deployments use a separate systemd socket unit. Its ListenStream must match the FPM pool’s listen path exactly. Inspect both units:
sudo systemctl cat <php-fpm-unit>
sudo systemctl cat <php-fpm-unit>.socket
sudo systemctl status <php-fpm-unit>.socket --no-pager
After correcting a mismatch, reload unit files and start or enable the socket as required by the deployment, then check the service:
sudo systemctl daemon-reload
sudo systemctl enable --now <php-fpm-unit>.socket
sudo systemctl restart <php-fpm-unit>
sudo systemctl status <php-fpm-unit> --no-pager
The activation model and the relationship between a socket unit’s listener and the daemon are explained in systemd’s daemon socket-activation guide. Do not enable a socket unit merely because its filename exists; follow the package’s unit dependencies and avoid running two competing activation methods for one endpoint.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Restart only after the reported problem is fixed
Repeat the configuration test after every edit. When it succeeds, restart the discovered unit and check its active state:
sudo php-fpm8.2 -t
sudo systemctl restart <php-fpm-unit>
sudo systemctl is-active <php-fpm-unit>
Replace php-fpm8.2 with the binary that belongs to your installation. A clean -t result followed by a failed restart means the remaining problem is likely a bind, permission, runtime-path, or systemd-unit issue; return to the first journal error rather than repeatedly restarting.
Verify the service, socket, and application separately
Use all three checks. Service state alone does not prove that the expected socket exists, and a socket alone does not prove that the web server can use it.
Best Value
- 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
- 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
- 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
- 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
- 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.
- Confirm systemd state:
sudo systemctl is-active <php-fpm-unit>
sudo systemctl status <php-fpm-unit> --no-pager - Confirm the runtime object and its permissions:
ls -l /run/php /run/php-fpm 2>/dev/null
sudo ss -xlpn | grep -i php - Make a local request to an application health endpoint:
curl -I http://127.0.0.1/your-php-health-endpoint
Use a health endpoint that does not expose secrets and is available only on the local interface or to trusted administrators. The PHP manual warns that an FPM status page can reveal request URLs; restrict it accordingly rather than publishing it on the public site. See PHP’s FPM status-page documentation.
Resolve a 502 after changing the FPM socket
A 502 from the web server usually means it cannot connect to the FastCGI endpoint, but the exact cause is in the web-server error log. Read the path named there and compare it byte-for-byte with the live FPM socket:
# Example checks; use your web server's actual log location
sudo grep -RInE 'fastcgi_pass|SetHandler|ProxyPassMatch' /etc/nginx /etc/apache2 /etc/httpd 2>/dev/null
ls -l /run/php /run/php-fpm 2>/dev/null
namei -l /run/php/php-fpm.sock 2>/dev/null
- If the log names a nonexistent socket, correct the web-server target or restore the FPM pool’s listener.
- If the socket exists but access is denied, align
listen.owner,listen.group,listen.mode, and every parent-directory permission with the web-server account. - If the service is inactive, return to
systemctl status, the boot journal, andphp-fpm -t; the 502 is a consequence, not the startup diagnosis.
Reload or restart the web server only after its configuration has been corrected and validated by that server’s own configuration checker. Do not change both sides blindly: one authoritative socket path should be selected, then used in the FPM pool and web-server configuration.
Choose a Unix socket or TCP listener deliberately
For a web server on the same host, the PHP manual prefers a Unix socket. It avoids a network listener but requires correct filesystem ownership, group membership, directory permissions, and a stable runtime path. TCP is useful when the web server is remote or separated by a network boundary; it introduces address and firewall considerations, and the FPM listen.allowed_clients directive can restrict permitted clients. See the FPM configuration directives.
| Decision point | Unix socket | TCP listener |
|---|---|---|
| Web server location | Best suited to a web server on the same VPS | Useful when clients or the web server are on another host or network boundary |
| Primary access control | Owner, group, mode, and parent-directory permissions | Bind address, firewall policy, and listen.allowed_clients |
| Typical failure | Missing path, wrong permissions, or path mismatch | Address already in use, wrong port, firewall, or unauthorized client |
| Operational concern | Runtime directory must be recreated correctly after reboot | Network exposure and stable address/port management |
Whichever mode you choose, configure one endpoint consistently. Changing from a socket to TCP requires changing the FPM pool and the web-server FastCGI target together, then reloading systemd if a unit file or socket unit changed.
Free tools Windows power users keep installed
One-click scans. No signup required.
Quick Recap
A compact decision tree
- The configuration test fails: fix the named include, directive, value, or pool section and retest.
- The journal says “Address already in use”: search pool listeners, processes, and sockets; remove the duplicate or assign a unique endpoint.
- The journal says “Permission denied” for a socket: align socket ownership, mode, group, and parent-directory traversal with the web-server account.
- The journal cites a PID, log, or runtime path: check disk space, inodes, directory existence, and service-user ownership.
- The unit was edited: run
daemon-reloadbefore restarting. - FPM is active but the site returns 502: compare the web-server error-log path with the live socket and test a local request.
Prevent the next failed restart
- Record the unit name, PHP binary, and FPM configuration path for each installed version.
- Keep pool listener paths unique and document which web server consumes each one.
- Use package tmpfiles or runtime-directory settings for anything under
/run. - Make local systemd changes with drop-ins so package upgrades do not erase them.
- After upgrades or pool edits, run the matching
-ttest before restarting. - Monitor disk space and inode availability so logs and PID files can be created.
- Keep FPM status endpoints local or restricted to trusted clients.
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.

