我使用以下标志在 CentOS 7 上使用 ICU4C 64_2 编译了自己的 PHP 5.6.40(带 fpm):
./configure CXXFLAGS="-std=c++11 -DU_USING_ICU_NAMESPACE=1" \
--prefix=/usr/local/php56 \
--program-suffix=56 \
--enable-fpm \
--with-config-file-scan-dir=/usr/local/php56/lib/php.conf.d \
--with-curl \
--with-gd \
--enable-gd-native-ttf \
--with-gettext \
--with-jpeg-dir=/usr/local/lib \
--with-freetype-dir=/usr/local/lib \
--with-libxml-dir=/usr/local/lib \
--with-kerberos \
--with-openssl \
--with-mcrypt \
--with-mhash \
--with-mysql=mysqlnd \
--with-mysql-sock=/var/lib/mysql/mysql.sock \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-pear \
--with-png-dir=/usr/local/lib \
--with-xsl \
--with-zlib \
--enable-zip \
--with-iconv=/usr/local \
--enable-bcmath \
--enable-calendar \
--enable-exif \
--enable-ftp \
--enable-sockets \
--enable-soap \
--enable-mbstring \
--with-icu-dir=/usr/local/icu \
--enable-intl
编译和安装程序成功,php 运行完美。
为了使用 systemd 处理 php-fpm56,我构建了以下服务文件:
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
[Service]
Type=notify
PIDFile=/run/php-fpm56.pid
ExecStart=/usr/local/php56/sbin/php-fpm56 --nodaemonize --pid=/run/php-fpm56.pid --fpm-config /usr/local/php56/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
LimitMEMLOCK=infinity
LimitNOFILE=65535
PrivateTmp=true
PrivateDevices=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectControlGroups=true
RestrictRealtime=true
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
[Install]
WantedBy=multi-user.target
/usr/local/php56/etc/php-fpm.conf :
[global]
error_log = /var/log/php-fpm56.log
emergency_restart_threshold = 3
emergency_restart_interval = 1m
process_control_timeout = 5
log_level = notice
;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ;
;;;;;;;;;;;;;;;;;;;;
[webapps]
user = $pool
group = $pool
listen = /usr/local/php56/sockets/$pool.sock
listen.owner = $pool
listen.group = nginx
listen.mode = 660
pm = ondemand
pm.max_children = 10
pm.process_idle_timeout = 60
pm.max_requests = 1000
security.limit_extensions = .php .php5 .php56 .inc .phtml
include=/etc/booting/users_data/*/php-fpm56.conf
尝试启动服务会导致超时:
php-fpm56.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm56.service; enabled; vendor preset: disabled)
Active: failed (Result: timeout) since Sun 2019-10-27 14:00:17 IST; 2min 12s ago
Process: 10008 ExecStart=/usr/local/php56/sbin/php-fpm56 --nodaemonize --pid=/run/php-fpm56.pid --fpm-config /usr/local/php56/etc/php-fpm.conf (code=exited, status=0/SUCCESS)
Main PID: 10008 (code=exited, status=0/SUCCESS)
Oct 27 13:58:47 asdasd.booting.cloud systemd[1]: Starting The PHP FastCGI Process Manager...
Oct 27 13:58:47 asdasd.booting.cloud php-fpm56[10008]: [27-Oct-2019 13:58:47] WARNING: Nothing matches the include pattern '/etc/booting/users_data/*/php-fpm56.conf' from /usr/local/php56/etc/php-fpm.conf at line 29.
systemd[1]: php-fpm56.service start operation timed out. Terminating.
systemd[1]: Failed to start The PHP FastCGI Process Manager.
systemd[1]: Unit php-fpm56.service entered failed state.
systemd[1]: php-fpm56.service failed.
日志档案:
NOTICE: fpm is running, pid 10008
NOTICE: ready to handle connections
NOTICE: Terminating ...
NOTICE: exiting, bye-bye!
我需要帮助找出导致启动失败的原因。我对 php7.2 做了相同的配置,它对我来说没有任何问题。
答案1
答案是配置中缺少标志
--with-fpm-systemd