php - 在 ubuntu 上启动 php7.4-fpm 时出现问题

标签 php ubuntu fpm php-7.4

我使用的是 nginx,而不是 apache。刚刚从 18.04 升级到 20.04,因此从 php7.2 升级到 php7.4。
但是 php7.4-fpm 无法启动。这是我的日志。

ian@thebeb:/etc/php/7.4/fpm$ sudo /etc/init.d/php7.4-fpm restart
Restarting php7.4-fpm (via systemctl): php7.4-fpm.serviceJob for php7.4-fpm.service failed because the control process exited with error code.
See "systemctl status php7.4-fpm.service" and "journalctl -xe" for details.
 failed!
ian@thebeb:/etc/php/7.4/fpm$ systemctl status php7.4-fpm.service
● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sun 2021-01-17 21:01:20 GMT; 9s ago
       Docs: man:php-fpm7.4(8)
    Process: 63191 ExecStart=/usr/sbin/php-fpm7.4 --nodaemonize --fpm-config /etc/php/7.4/fpm/php-fpm.conf (code=exited, status=127)
    Process: 63205 ExecStopPost=/usr/lib/php/php-fpm-socket-helper remove /run/php/php-fpm.sock /etc/php/7.4/fpm/pool.d/www.conf 74 (code=exited, status=0/SUCCESS)
   Main PID: 63191 (code=exited, status=127)

Jan 17 21:01:20 thebeb systemd[1]: Starting The PHP 7.4 FastCGI Process Manager...
Jan 17 21:01:20 thebeb php-fpm7.4[63191]: /usr/sbin/php-fpm7.4: symbol lookup error: /usr/sbin/php-fpm7.4: undefined symbol: pcre2_set_depth_limit_8
Jan 17 21:01:20 thebeb systemd[1]: php7.4-fpm.service: Main process exited, code=exited, status=127/n/a
Jan 17 21:01:20 thebeb systemd[1]: php7.4-fpm.service: Failed with result 'exit-code'.
Jan 17 21:01:20 thebeb systemd[1]: Failed to start The PHP 7.4 FastCGI Process Manager.
ian@thebeb:/etc/php/7.4/fpm$ journalctl -xe
-- A start job for unit UNIT has begun execution.
-- 
-- The job identifier is 431.
Jan 17 21:01:10 thebeb dbus-daemon[3745]: [session uid=1000 pid=3745] Activating via systemd: service name='org.freedesktop.Tracker1' unit='tracker-store.service' requested by ':1.2' (uid=1000 pid=3742 >
Jan 17 21:01:10 thebeb dbus-daemon[3745]: [session uid=1000 pid=3745] Successfully activated service 'org.freedesktop.Tracker1'
Jan 17 21:01:10 thebeb systemd[3723]: Started Tracker metadata database store and lookup manager.
-- Subject: A start job for unit UNIT has finished successfully
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- A start job for unit UNIT has finished successfully.
-- 
-- The job identifier is 431.
Jan 17 21:01:15 thebeb kernel: [UFW BLOCK] IN=enp0s3 OUT= MAC=01:00:5e:00:00:01:bc:14:01:0f:f6:e6:08:00 SRC=192.168.0.1 DST=224.0.0.1 LEN=36 TOS=0x00 PREC=0xC0 TTL=1 ID=0 DF PROTO=2 
Jan 17 21:01:20 thebeb sudo[63180]:      ian : TTY=pts/1 ; PWD=/etc/php/7.4/fpm ; USER=root ; COMMAND=/etc/init.d/php7.4-fpm restart
Jan 17 21:01:20 thebeb sudo[63180]: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan 17 21:01:20 thebeb systemd[1]: Starting The PHP 7.4 FastCGI Process Manager...
-- Subject: A start job for unit php7.4-fpm.service has begun execution
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- A start job for unit php7.4-fpm.service has begun execution.
-- 
-- The job identifier is 3745.
Jan 17 21:01:20 thebeb php-fpm7.4[63191]: /usr/sbin/php-fpm7.4: symbol lookup error: /usr/sbin/php-fpm7.4: undefined symbol: pcre2_set_depth_limit_8
Jan 17 21:01:20 thebeb systemd[1]: php7.4-fpm.service: Main process exited, code=exited, status=127/n/a
-- Subject: Unit process exited
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- An ExecStart= process belonging to unit php7.4-fpm.service has exited.
-- 
-- The process' exit code is 'exited' and its exit status is 127.
Jan 17 21:01:20 thebeb systemd[1]: php7.4-fpm.service: Failed with result 'exit-code'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- The unit php7.4-fpm.service has entered the 'failed' state with result 'exit-code'.
Jan 17 21:01:20 thebeb systemd[1]: Failed to start The PHP 7.4 FastCGI Process Manager.
-- Subject: A start job for unit php7.4-fpm.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- A start job for unit php7.4-fpm.service has finished with a failure.
-- 
-- The job identifier is 3745 and the job result is failed.
Jan 17 21:01:20 thebeb sudo[63180]: pam_unix(sudo:session): session closed for user root
Jan 17 21:01:41 thebeb tracker-store[63047]: OK
Jan 17 21:01:41 thebeb systemd[3723]: tracker-store.service: Succeeded.
-- Subject: Unit succeeded
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
-- 
-- The unit UNIT has successfully entered the 'dead' state.
ian@thebeb:/etc/php/7.4/fpm$
符号查找错误,是符号查找错误:/usr/sbin/php-fpm7.4: undefined symbol :pcre2_set_depth_limit_8。
我已经检查了我能想到的所有内容,但无法发现问题。现在我已经超出了我的深度!帮助。
请求后添加:
ian@thebeb:/etc/php/7.4/fpm$ ldd $(which php-fpm7.4)
    linux-vdso.so.1 (0x00007ffefb4e7000)
    libargon2.so.1 => /usr/lib/x86_64-linux-gnu/libargon2.so.1 (0x00007f13e38a6000)
    libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f13e388a000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f13e373b000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f13e3735000)
    libapparmor.so.1 => /usr/lib/x86_64-linux-gnu/libapparmor.so.1 (0x00007f13e3720000)
    libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f13e3671000)
    libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f13e34b5000)
    libssl.so.1.1 => /usr/local/lib/libssl.so.1.1 (0x00007f13e3422000)
    libcrypto.so.1.1 => /usr/local/lib/libcrypto.so.1.1 (0x00007f13e2f57000)
    libpcre2-8.so.0 => /usr/local/lib/libpcre2-8.so.0 (0x00007f13e2d0c000)
    libz.so.1 => /usr/local/lib/libz.so.1 (0x00007f13e2af0000)
    libsodium.so.23 => /usr/lib/x86_64-linux-gnu/libsodium.so.23 (0x00007f13e2a98000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f13e28a4000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f13e2881000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f13e3d6f000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f13e2876000)
    liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f13e284d000)
    liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f13e282c000)
    libgcrypt.so.20 => /usr/lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f13e270e000)
    libicuuc.so.66 => /usr/lib/x86_64-linux-gnu/libicuuc.so.66 (0x00007f13e2526000)
    libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f13e2503000)
    libicudata.so.66 => /usr/lib/x86_64-linux-gnu/libicudata.so.66 (0x00007f13e0a42000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f13e0861000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f13e0846000)
ian@thebeb:/etc/php/7.4/fpm$ 

最佳答案

pcre2_set_depth_limit_8是一个库符号引用(在我的系统上它位于 /usr/lib/apache2/modules/libphp8.0.so 中),它再次出现在我的系统上,驻留在 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.10.0 中.
因此,我怀疑您系统上的 PCRE 软件包已损坏。检查您的 libpcre2-8-0 的状态包裹。
或者只是做

ldd /usr/sbin/php-fpm7.4 | grep pcre2
并检查它指向的位置,或者它是否说找不到该库(在后一种情况下,您只需要 apt-get 安装它,显然该库的依赖项检查系统已损坏,因为它没有发现缺少)。
如果它确实指向一个 .so 文件,那么让我们检查一下该文件:例如(我只有一个 Raspberry 可用)
 nm -gD  /usr/lib/arm-linux-gnueabihf/libpcre2-8.so.0.7.1
应该报告库中的所有符号,而我们的 grep'ping 确实找到了它:
 0000f508 T pcre2_set_depth_limit_8
如果是 不是 ,那么这意味着该库不包含该符号-对我而言,这表明该库必须以某种方式损坏,因为在其他系统上该符号存在。
Ubuntu 20.04
我记得我在其他地方有一个 20.04 可用。图书馆有libpcre2-8.so.0.9.0 :
-rw-r--r-- 1 root root 584392 Dec  7  2019 /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0
符号就在那里。我拥有的 Ubuntu 软件包是 libpcre2-8-0:amd64 .
 # nm -gD /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0 | grep pcre2_set_depth_limit_8
 00000000000116f0 T pcre2_set_depth_limit_8

关于php - 在 ubuntu 上启动 php7.4-fpm 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65766097/

相关文章:

php - 如何控制单选按钮?从数据库、PHP、MYSQL 回显数据

php - Base64 解码字节数组 - 来自 iOS 的 APNS token

php - 删除 JavaScript 链接

swift - 如何在树莓派 3 上安装 Swift

ubuntu - Puma 2.10.1 不重启

php - 在 (php-fpm) docker 容器中找不到 mysqli

php - 如何将值从 from 传递到 sql 查询

用于删除 ubuntu 上的备份的 shell 脚本

CakePHP 内部服务器错误仅针对某些用户,清除缓存后消失

php - 如何在docker容器中启用php-fpm的访问日志?