I was installing redis and came across php8.3-fpm installation error. This are the relevant installation messages:
apt install redis-server
...
...
Setting up php8.3-fpm (8.3.6-0ubuntu0.24.04.2) ...
NOTICE: Not enabling PHP 8.3 FPM by default.
NOTICE: To enable PHP 8.3 FPM in Apache2 do:
NOTICE: a2enmod proxy_fcgi setenvif
NOTICE: a2enconf php8.3-fpm
NOTICE: You are seeing this message because you have apache2 package installed.
Job for php8.3-fpm.service failed because a timeout was exceeded.
See "systemctl status php8.3-fpm.service" and "journalctl -xeu php8.3-fpm.service" for details.
invoke-rc.d: initscript php8.3-fpm, action "restart" failed.
× php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php8.3-fpm.service; enabled; preset: enabled)
Active: failed (Result: timeout) since Sun 2024-10-06 13:52:03 CEST; 16ms ago
Docs: man:php-fpm8.3(8)
Process: 285882 ExecStart=/usr/sbin/php-fpm8.3 --nodaemonize --fpm-config /etc/php/8.3/fpm/php-fpm.conf (code=exited, status=0/SUCCESS)
Process: 285889 ExecStopPost=/usr/lib/php/php-fpm-socket-helper remove /run/php/php-fpm.sock /etc/php/8.3/fpm/pool.d/www.conf 83 (code=exited, status=0/SUCCESS)
Main PID: 285882 (code=exited, status=0/SUCCESS)
CPU: 90ms
Oct 06 13:50:33 Ubuntu-2404-noble-amd64-base systemd[1]: Starting php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager...
Oct 06 13:52:03 Ubuntu-2404-noble-amd64-base systemd[1]: php8.3-fpm.service: start operation timed out. Terminating.
Oct 06 13:52:03 Ubuntu-2404-noble-amd64-base systemd[1]: php8.3-fpm.service: Failed with result 'timeout'.
Oct 06 13:52:03 Ubuntu-2404-noble-amd64-base systemd[1]: Failed to start php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager.
dpkg: error processing package php8.3-fpm (--configure):
installed php8.3-fpm package post-installation script subprocess returned error exit status 1
Setting up libjemalloc2:amd64 (5.3.0-2build1) ...
Setting up liblzf1:amd64 (3.6-4) ...
Setting up redis-tools (5:7.0.15-1build2) ...
Setting up redis-server (5:7.0.15-1build2) ...
Created symlink /etc/systemd/system/redis.service → /usr/lib/systemd/system/redis-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/redis-server.service → /usr/lib/systemd/system/redis-server.service.
Processing triggers for man-db (2.12.0-4build2) ...
Processing triggers for libc-bin (2.39-0ubuntu8.3) ...
Errors were encountered while processing:
php8.3-fpm
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)
Systemctl and yournalctl messages are not particularly descriptive - just saying php8.3-fpm failed to start with result 'timeout'.
The error seem to be with dpkg
processing php8.3-fpm
: installed php8.3-fpm package post-installation script subprocess returned error exit status 1
Content of /var/lib/dpkg/info/php8.3-fpm.postinst
:
#!/bin/sh
set -e
if [ -e /usr/share/apache2/apache2-maintscript-helper ]; then
. /usr/share/apache2/apache2-maintscript-helper
php_enable() {
# Don't enable PHP FPM by default when Apache 2 is installed
apache2_msg notice "NOTICE: Not enabling PHP 8.3 FPM by default."
apache2_msg notice "NOTICE: To enable PHP 8.3 FPM in Apache2 do:"
apache2_msg notice "NOTICE: a2enmod proxy_fcgi setenvif"
apache2_msg notice "NOTICE: a2enconf php8.3-fpm"
apache2_msg notice "NOTICE: You are seeing this message because you have apache2 package installed."
return 1
}
else
php_enable() {
# Don't enable PHP FPM by default when Apache 2 is not installed
return 1
}
fi
if [ "$1" = "triggered" ] && [ "$2" = "/etc/php/8.3/fpm/conf.d" ]; then
invoke-rc.d php8.3-fpm restart
fi
CONFDIR=/etc/php/8.3/fpm/conf.d
if [ "$1" = "configure" ]; then
phpini="/etc/php/8.3/fpm/php.ini"
if [ "fpm" = "cli" ]; then
ucf /usr/lib/php/8.3/php.ini-production.fpm $phpini
else
ucf /usr/lib/php/8.3/php.ini-production $phpini
fi
ucfr php8.3-fpm $phpini
if [ -e /usr/lib/php/php-maintscript-helper ]; then
. /usr/lib/php/php-maintscript-helper
mods=$(phpquery -M -v 8.3)
for mod in $mods; do
php_invoke enmod 8.3 fpm $mod
done
fi
if [ -n "$2" ] && dpkg --compare-versions "$2" lt "7.0.3-2~"; then
rm -f /etc/php/8.3/fpm/conf.d/20-opcache.ini;
fi
fi
# Automatically added by dh_apache2/UNDECLARED
if php_enable; then
if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then
. /usr/share/apache2/apache2-maintscript-helper
for conf in php8.3-fpm ; do
apache2_invoke enconf $conf || exit 1
done
fi
fi
# End automatically added section
# Automatically added by dh_systemd_enable/13.14.1ubuntu5
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then
# The following line should be removed in trixie or trixie+1
deb-systemd-helper unmask 'php8.3-fpm.service' >/dev/null || true
# was-enabled defaults to true, so new installations run enable.
if deb-systemd-helper --quiet was-enabled 'php8.3-fpm.service'; then
# Enables the unit on first installation, creates new
# symlinks on upgrades if the unit file has changed.
deb-systemd-helper enable 'php8.3-fpm.service' >/dev/null || true
else
# Update the statefile to add new symlinks (if any), which need to be
# cleaned up on purge. Also remove old symlinks.
deb-systemd-helper update-state 'php8.3-fpm.service' >/dev/null || true
fi
fi
# End automatically added section
# Automatically added by dh_installinit/13.14.1ubuntu5
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then
if [ -x "$(command -v systemd-tmpfiles)" ]; then
systemd-tmpfiles ${DPKG_ROOT:+--root="$DPKG_ROOT"} --create php8.3-fpm.conf || true
fi
fi
# End automatically added section
# Automatically added by dh_installdeb/13.14.1ubuntu5
dpkg-maintscript-helper rm_conffile /etc/init/php8.3-fpm.conf 7.4.3-4\~ php8.3-fpm -- "$@"
# End automatically added section
# Automatically added by dh_installinit/13.14.1ubuntu5
if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then
if [ -z "${DPKG_ROOT:-}" ] && [ -x "/etc/init.d/php8.3-fpm" ]; then
update-rc.d php8.3-fpm defaults >/dev/null
if [ -n "$2" ]; then
_dh_action=restart
else
_dh_action=start
fi
invoke-rc.d php8.3-fpm $_dh_action || exit 1
fi
fi
# End automatically added section
exit 0
Not familiar with how dpkg functions, but exit 1
occurs in 2 locations. First one occurs when reading apache conf files. I have removed apache2 so this one cannot not trigger anymore. The second one just signals that start/restart failed.
Any tips on what could be the problem? This seems to be above my skill level.
Additional info: running systemctl status php8.3-fpm.service
returns
× php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php8.3-fpm.service; enabled; preset: enabled)
Active: failed (Result: timeout) since Mon 2024-10-07 11:34:21 CEST; 1min 33s ago
Docs: man:php-fpm8.3(8)
Process: 334032 ExecStart=/usr/sbin/php-fpm8.3 --nodaemonize --fpm-config /etc/php/8.3/fpm/php-fpm.conf (code=exited, status=0/SUCCESS)
Process: 334035 ExecStopPost=/usr/lib/php/php-fpm-socket-helper remove /run/php/php-fpm.sock /etc/php/8.3/fpm/pool.d/www.conf 83 (code=exited, status=0/SUCCESS)
Main PID: 334032 (code=exited, status=0/SUCCESS)
CPU: 98ms
Oct 07 11:32:51 Ubuntu-2404-noble-amd64-base systemd[1]: Starting php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager...
Oct 07 11:34:21 Ubuntu-2404-noble-amd64-base systemd[1]: php8.3-fpm.service: start operation timed out. Terminating.
Oct 07 11:34:21 Ubuntu-2404-noble-amd64-base systemd[1]: php8.3-fpm.service: Failed with result 'timeout'.
Oct 07 11:34:21 Ubuntu-2404-noble-amd64-base systemd[1]: Failed to start php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager.
Additionaly, manually starting the service with /usr/sbin/php-fpm8.3 --nodaemonize --fpm-config /etc/php/8.3/fpm/php-fpm.conf
returns
NOTICE: fpm is running, pid 334206
NOTICE: ready to handle connections
NOTICE: systemd monitor interval set to 10000ms
... no more messages
indicating that fpm was started successfully, but perhaps systemd has an issue? Am I dealing with mismatched PID numbers?
PHP-FPM is installed as a
notify
type service; this means that, quoting systemd.service — Service unit configuration:As per this line in your log file:
something's up with that; this notification is either never sent or never delivered.
A workaround to get the service to start properly would be to change the service type to
exec
, by overriding/lib/systemd/system/php8.3-fpm.service
.In order to do that, run:
You'll be presented with a commented-out version of the service in an editor (which editor will depend on the environment; by default, on Ubuntu 24.04 it should end up being
nano
).Change the file so that it looks like this:
Then save the file (in
nano
: Ctrl + O / Enter / Ctrl + X).Finally, run:
Note that overriding
/lib/systemd/system/php8.3-fpm.service
(as opposed to manually editing it) is needed because an update of PHP-FPM may very well change/lib/systemd/system/php8.3-fpm.service
, effectively reverting the change you made.