Hi all, EasyBackup (2023.11.28, by Eideard) has two bugs on Unraid 7.3.2 / PHP 8.4. (Yes, I'm still using it...and maybe some others too...) Since the plugin has no own support thread (both "Support" links point to the CA User Scripts thread), I'm posting the fixes here for anyone still using it. Note: CA marks this plugin as beta / use at own risk. These fixes are a stopgap until migrating to another backup solution. BUG 1: "Backup VMs" tab is empty - LineQuestion() in includes/functions.php uses an implicitly nullable parameter (callable $validation = null), which is deprecated in PHP 8.4. The deprecation fires while functions.php is loading. The custom error handler then calls isCommandLineInterface(), which is defined in functions.php and not loaded yet -> fatal error, empty VM list. Fix: change it to ?callable $validation = null ----------------- BUG 2: zombie virsh processes / very slow web UI - cmdExec() in includes/functions.php uses proc_open() but never calls proc_close(), so every command (mostly virsh) is left as a zombie in the php-fpm worker. With the "Backup VMs" tab open I had ~8,900 zombies after 25 minutes, and the whole web UI became very slow (~30 s per page). Also, the wait loop never waits: proc_get_status() returns 'running' as a boolean, so "!== 1" is always true. Fix: close the pipes and call proc_close($proc) after reading the output. To check for zombies: ps -eo stat=,comm= | grep -c '^Z.*virsh' Patches are lost on reboot, so I apply both with a User Script set to "At Startup of Array": #!/bin/bash
F=/usr/local/emhttp/plugins/easybackup/includes/functions.php
[ -f "$F" ] || exit 0
# Fix 1: PHP 8.4 implicit nullable parameter
sed -i 's/\([(,] *\)callable \$validation = null/\1?callable $validation = null/' "$F"
# Fix 2: cmdExec() never closes processes -> zombies
grep -q 'proc_close($proc)' "$F" || \
sed -i '/Loadingtime/i\ foreach ($pipes as $p) { if (is_resource($p)) fclose($p); } proc_close($proc);' "$F"
# Check
grep -q '?callable \$validation = null' "$F" && echo "Fix 1 active" || echo "Fix 1 FAILED"
grep -q 'proc_close($proc)' "$F" && echo "Fix 2 active" || echo "Fix 2 FAILED"
php -l "$F" | grep -q "No syntax errors" && echo "Syntax OK" || echo "SYNTAX ERROR" After both fixes the tab loads instantly and no zombies remain. Use at your own risk. And as always: never run code from the internet that you don't understand or haven't checked yourself – this script runs as root! Keep a copy of the original file (e.g. cp functions.php functions.php.bak) before patching. Tested only on my setup (Unraid 7.3.2). I couldn't find a newer version or fork – if anyone knows a maintained alternative, I'd be happy to hear about it. Hope this helps someone. Cheers from Austria, wstone75