keylin麒麟系统安装php7.4
1.清理之前的安装
停止相关进程
pkill -9 php-fpm 2>/dev/null
pkill -9 php 2>/dev/null
删除旧安装
rm -rf /usr/local/php7.4
rm -rf /usr/src/php/php-7.4.33*
删除systemd服务
systemctl stop php7.4-fpm 2>/dev/null
rm -f /etc/systemd/system/php7.4-fpm.service
systemctl daemon-reload
清理环境变量
rm -f /etc/profile.d/php7.4.sh
rm -f /usr/bin/php7.4 2>/dev/null
rm -f /usr/bin/phpize7.4 2>/dev/null
rm -f /usr/bin/php-config7.4 2>/dev/null
2.安装编译依赖
更新系统并安装编译工具
yum update -y
yum groupinstall -y "Development Tools"
yum install -y epel-release
安装PHP编译依赖
yum install -y
gcc gcc-c++ make
libxml2-devel openssl-devel curl-devel
libjpeg-devel libpng-devel freetype-devel
readline-devel
libxslt-devel bzip2-devel
sqlite-devel oniguruma-devel
libzip-devel
3.下载PHP源码
创建源码目录
mkdir -p /usr/src/php
cd /usr/src/php
下载PHP 7.4
wget https://www.php.net/distributions/php-7.4.33.tar.gz
if [ $? -ne 0 ]; then
echo "下载失败,尝试备用链接..."
wget https://downloads.php.net/~derick/php-7.4.33.tar.gz
fi
解压
tar -zxvf php-7.4.33.tar.gz
cd php-7.4.33
4.配置PHP
先检查必要的工具
which gcc
which make
配置PHP编译选项
./configure --prefix=/usr/local/php7.4
--with-config-file-path=/usr/local/php7.4/etc
--enable-fpm
--with-fpm-user=nobody
--with-fpm-group=nobody
--with-mysqli
--with-pdo-mysql
--with-openssl
--with-curl
--with-zlib
--enable-mbstring
--with-gd
--enable-bcmath
--enable-sockets
--with-gettext
5.编译和安装
编译(根据CPU核心数调整,2核心用-j2)
make -j2
检查编译是否成功
if [ $? -eq 0 ]; then
echo "编译成功,开始安装..."
make install
else
echo "编译失败,查看错误信息..."
exit 1
fi
6.验证安装
检查安装的文件
ls -la /usr/local/php7.4/
检查php和php-fpm是否存在
if [ -f /usr/local/php7.4/bin/php ]; then
echo "PHP安装成功!"
/usr/local/php7.4/bin/php -v
else
echo "PHP安装失败"
exit 1
fi
if [ -f /usr/local/php7.4/sbin/php-fpm ]; then
echo "php-fpm安装成功!"
/usr/local/php7.4/sbin/php-fpm -v
else
echo "php-fpm未找到,检查编译..."
find /usr/src/php -name "php-fpm" -type f
fi
7.创建必要的目录和配置文件
创建配置目录
mkdir -p /usr/local/php7.4/etc/php.d
mkdir -p /usr/local/php7.4/var/{log,run}
mkdir -p /usr/local/php7.4/
创建php.ini
if [ -f php.ini-development ]; then
cp php.ini-development /usr/local/php7.4/etc/php.ini
elif [ -f php.ini-production ]; then
cp php.ini-production /usr/local/php7.4/etc/php.ini
else
cat > /usr/local/php7.4/etc/php.ini << 'EOF'
[PHP]
engine = On
short_open_tag = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
serialize_precision = -1
disable_functions =
disable_classes =
zend.enable_gc = On
expose_php = On
max_execution_time = 30
max_input_time = 60
memory_limit = 128M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = On
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 8M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
default_charset = "UTF-8"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
EOF
fi
创建php-fpm配置文件
cat > /usr/local/php7.4/etc/php-fpm.conf << 'EOF'
[global]
pid = /usr/local/php7.4/var/run/php-fpm.pid
error_log = /usr/local/php7.4/var/log/php-fpm.log
daemonize = yes
[www]
user = nobody
group = nobody
listen = /tmp/php-fpm.sock
listen.owner = nobody
listen.group = nobody
listen.mode = 0666
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500
EOF
创建www.conf
mkdir -p /usr/local/php7.4/etc/php-fpm.d
cat > /usr/local/php7.4/etc/php-fpm.d/www.conf << 'EOF'
[www]
user = nobody
group = nobody
listen = /tmp/php-fpm.sock
listen.owner = nobody
listen.group = nobody
listen.mode = 0666
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500
EOF
8.创建systemd服务
cat > /etc/systemd/system/php7.4-fpm.service << 'EOF'
[Unit]
Description=PHP 7.4 FastCGI Process Manager
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/php7.4/var/run/php-fpm.pid
ExecStart=/usr/local/php7.4/sbin/php-fpm --daemonize --fpm-config /usr/local/php7.4/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
ExecStop=/bin/kill -QUIT $MAINPID
PrivateTmp=true
Restart=on-failure
RestartSec=10
StartLimitInterval=300
StartLimitBurst=5
TimeoutStartSec=60
[Install]
WantedBy=multi-user.target
EOF
重新加载systemd
systemctl daemon-reload
9.设置环境变量和软链接
创建环境变量文件
echo 'export PATH=/usr/local/php7.4/bin:/usr/local/php7.4/sbin:$PATH' > /etc/profile.d/php7.4.sh
chmod +x /etc/profile.d/php7.4.sh
source /etc/profile.d/php7.4.sh
创建软链接
ln -sf /usr/local/php7.4/bin/php /usr/bin/php7.4
ln -sf /usr/local/php7.4/bin/phpize /usr/bin/phpize7.4 2>/dev/null || true
ln -sf /usr/local/php7.4/bin/php-config /usr/bin/php-config7.4 2>/dev/null || true
ln -sf /usr/local/php7.4/bin/php /usr/bin/php 2>/dev/null || true
10.启动
清理可能的旧进程和文件
pkill -9 php-fpm 2>/dev/null
rm -f /tmp/php-fpm.sock
rm -f /usr/local/php7.4/var/run/php-fpm.pid
测试php-fpm配置文件
if [ -f /usr/local/php7.4/sbin/php-fpm ]; then
/usr/local/php7.4/sbin/php-fpm --test
fi
设置开机启动
systemctl enable php7.4-fpm
启动
systemctl start php7.4-fpm
检查状态
systemctl status php7.4-fpm

浙公网安备 33010602011771号