我的家庭网络内运行着一个小型 Ubuntu 服务器,上面使用 nginx 网络服务器运行着各种网络服务,如 vaultwarden、nextcloud、seeddms 等。我安装了多个 PHP 版本,但 nginx 只使用了 PHP 7.4。因此,我决定清除所有已安装的 PHP 版本,以便稍微清理一下所有内容,只安装 PHP 8.1 以及所有需要的 php8.1 扩展,如 php8.1-fpm 等。当然,我更改了 nginx 的配置以使用新安装的 php8.1 版本。
现在问题来了。我真的不知道为什么会发生这种情况,或者是什么导致了这种情况,但是php8.1-fpm
自从我清理了本地 PHP 后,该服务就无法正常启动了。
该命令sudo systemctl start php8.1-fpm
给出以下错误消息:
我发现当我php
在路径中创建一个名为“手动”的文件夹时/var/run/
,我可以成功启动服务,但这只能在下次启动之前起作用,然后同样的事情再次发生。启动后,还是同样的错误。手动创建的文件夹/var/run/php
不再存在。
我知道那/var/run
是临时文件夹位置,但我的安装一定出了问题,因为为什么默认情况下不会php
在启动时创建该文件夹或类似的东西。我以前从来没有遇到过这种情况。
有一些帖子有类似的错误消息,但对我的情况没有帮助。目前,我正在使用一种解决方法,即在启动时通过脚本创建该文件夹,但这真的不是一个好的解决方案,我真的不想让它保持原样,这将是不好的做法,所以请不要使用解决方法。我想找到问题的根本原因。
一些进一步的信息(命令输出,配置文件等)可以帮助您找到问题:
结果php -v
:
PHP 8.1.14 (cli) (built: Jan 6 2023 15:23:18) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.14, Copyright (c) Zend Technologies
with Zend OPcache v8.1.14, Copyright (c), by Zend Technologies
结果update-alternatives --list php
:
/usr/bin/php8.1
结果sudo nano /lib/systemd/system/php8.1-fpm.service
:
[Unit]
Description=The PHP 8.1 FastCGI Process Manager
Documentation=man:php-fpm8.1(8)
After=network.target
[Service]
Type=notify
ExecStart=/usr/sbin/php-fpm8.1 --nodaemonize --fpm-config /etc/php/8.1/fpm/php-fpm.conf
ExecStartPost=-/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.1/fpm/pool.d/www.conf 81
ExecStopPost=-/usr/lib/php/php-fpm-socket-helper remove /run/php/php-fpm.sock /etc/php/8.1/fpm/pool.d/www.conf 81
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
结果systemctl start php8.1-fpm
:
Job for php8.1-fpm.service failed because the control process exited with error code.
See "systemctl status php8.1-fpm.service" and "journalctl -xeu php8.1-fpm.service" for details.
结果sudo journalctl -xeu php8.1-fpm.service
:
如果您需要查看一些配置文件或不同命令的结果,请告诉我,我会将它们发布在这里。
答案1
重新安装你的php8.1-fpm
包:
sudo apt install --reinstall php8.1-fpm
如果这不起作用,则可能是配置错误。检查您的日志和配置文件:
sudo cat /var/log/php8.1-fpm.log
sudo php-fpm8.1 -t