#! /bin/bash

# 切换到安装包存放目录

cd /server/data/packages

# 下载 PHP 源码包(如果需要)

#wget https://www.php.net/distributions/php-8.3.0.tar.gz || exit 1

# 解压 PHP 源码包

tar -xzvf php-8.3.0.tar.gz || exit 1

sudo yum -y install cmake gcc g++ ncurses-devel libtirpc-devel rpcgen libxml2-devel sqlite-devel libpng-devel oniguruma-devel

# 创建 PHP 安装目录和配置文件目录

mkdir -p /server/php/8.3.0/
mkdir -p /server/php/8.3.0/etc

sudo yum install libcurl-devel

# 切换到 PHP 源码目录

cd php-8.3.0

# 配置 PHP 安装选项

./configure
--prefix=/server/php/8.3.0/
--with-config-file-path=/server/php/8.3.0/etc
--enable-fpm
--with-gd
--enable-gd-jis-conv
--enable-mysqlnd
--enable-mbstring
--with-openssl
--with-curl
--with-zlib
--with-pdo-mysql
--with-fpm-user=nginx
--with-fpm-group=nginx
--with-mysqli
--with-sockets

# 编译并安装 PHP

make && make install || exit 1

# 创建 PHP 命令的软链接

# 目标软链接的路径

TARGET_LINK="/usr/local/bin/php"

# PHP 命令的实际路径

PHP_COMMAND="/server/php/8.3.0/bin/php"

# 检查软链接是否存在

if [ ! -e "$TARGET_LINK" ]; then

# 如果不存在,则创建软链接

sudo ln -s "$PHP_COMMAND" "$TARGET_LINK"
echo "软链接已创建: $TARGET_LINK -> $PHP_COMMAND"
else
echo "软链接已存在: $TARGET_LINK"
fi

# 复制 PHP 配置文件

cp /server/data/packages/php-8.3.0/php.ini-production  /server/php/8.3.0/etc/php.ini

# 启动 PHP-FPM
find / -name "php-fpm.conf" -print | while read -r file; do
    cp -v "$file" /server/php/8.3.0/etc/
done

#mv /server/php/8.3.0/etc/php-fpm.d/www.conf.default /server/php/8.3.0/etc/php-fpm.d/www.conf
sudo /server/php/8.3.0/sbin/php-fpm

# 检查 PHP-FPM 进程是否运行

ps -ef | grep php-fpm | grep -v grep

php --ini

# 检查 PHP 版本

php --version



# 安装PECL  
cd /server/php/8.3.0/bin/
sudo wget http://pear.php.net/go-pear.phar -O go-pear.php
sudo php go-pear.php
sudo ./php go-pear.php
# 搜索Swoole扩展  
sudo ./pecl search swoole

# 安装Swoole扩展  
sudo ./pecl install swoole < /dev/null

# 显示PHP配置文件路径  
./php --ini

# 获取PHP配置文件路径  
PHP_INI_PATH=$(./php --ini | grep "Loaded Configuration File" | awk -F: '{print $2}' | sed 's/ //g')

# 检查是否已存在Swoole扩展的配置行  
if ! grep -q "extension=swoole.so" "$PHP_INI_PATH"; then
    # 使用sed在php.ini文件的末尾添加Swoole扩展的配置行  
    sed -i '$a\extension=swoole.so' "$PHP_INI_PATH"
    echo "Swoole扩展已添加到$PHP_INI_PATH"  
else
    echo "Swoole扩展的配置已存在于$PHP_INI_PATH"  
fi

echo "Swoole扩展安装和配置完成。"


欢迎关注拓行公众号,分享各种技术博客文章

拓行——奋勇进取,开拓未来,砥砺前行

最后修改:2024 年 06 月 18 日
如果您对各种技术博客文章感兴趣,欢迎关注拓行公众号,分享各种专业技术知识~