Fix PHP-FPM pool not removed on account termination

Two bugs that together left stale pool files behind after termination,
crashing php-fpm on next startup (exit-code 78, user not found):

1. removePool() used file_exists() to guard the rm — fails silently when
   www-data can't read /etc/php/*/fpm/pool.d/; now always attempts sudo rm -f
2. reloadFPM() called systemctl without sudo — silently failed as www-data,
   leaving the old pool loaded even when the file was successfully removed

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-10 05:53:25 +00:00
parent 7107d230c8
commit 658e2f9057
+5 -2
View File
@@ -48,7 +48,10 @@ php_value[max_execution_time] = 30
public static function removePool(string $username): void {
foreach (['7.4','8.1','8.2','8.3'] as $ver) {
$file = str_replace('{ver}', $ver, self::$poolDir) . "/{$username}.conf";
if (file_exists($file)) { shell_exec("sudo rm -f " . escapeshellarg($file)); self::reloadFPM($ver); }
// Always attempt removal — don't rely on file_exists() which fails when
// www-data can't read the pool.d directory; rm -f is a no-op if missing
shell_exec("sudo rm -f " . escapeshellarg($file) . " 2>/dev/null");
self::reloadFPM($ver);
}
}
@@ -112,6 +115,6 @@ php_value[max_execution_time] = 30
}
private static function reloadFPM(string $ver): void {
shell_exec("systemctl reload php{$ver}-fpm 2>/dev/null || true");
shell_exec("sudo systemctl reload php{$ver}-fpm 2>/dev/null || true");
}
}