对于PHP开发或DevOP人来说,在Linux系统下安装PHP环境是必备基本技能。能做一些简单配置之后有个脚本自动安装PHP就能节省不少时间。该脚本我自己写的,可能不具备通用性哦。
话不多说,直接上代码。
#!/bin/bash
#------------------------------
#-----Function Update Ningx and PHP for CentOS8.*.
#Author:Mickeywaugh@qq.com
#------------------------------
[ -n "$1" ] && PHP_VER="$1"
[ -z "$1" ] && PHP_VER="8.0.2"
PHP_SRC="https://www.php.net/distributions/php-${PHP_VER}.tar.gz"
PHP_CFG="--prefix=/usr/local/php --disable-debug --disable-rpath --disable-mbregex --enable-fpm --enable-shared --enable-soap --enable-phar --enable-calendar --enable-dom --enable-exif --enable-fileinfo --enable-filter --enable-ftp --enable-gd --enable-bcmath --enable-mbstring --enable-pdo --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mysqlnd --enable-mysqlnd-compression-support --enable-opcache --enable-pcntl --with-curl --with-cdb --with-openssl --with-mhash --with-sqlite3 --with-zlib --with-iconv --with-gettext --with-freetype --with-jpeg --with-gmp --with-pdo-mysql=shared,mysqlnd --with-mysqli=shared,mysqlnd --with-pdo-sqlite --with-readline --with-xsl --with-pear --with-mysql-sock=/var/run/mysql/mysql.sock --with-config-file-path=/usr/local/php/etc --without-gdbm "
DOWNLOAD_DIR="/home/tools"
LOG_FILE="${DOWNLOAD_DIR}/installphp.log"
PHP_EXT_DIR=${DOWNLOAD_DIR}"/php-extensions"
PHP_EXT_LIST=("redis-5.3.2" "pdo_sqlsrv-5.8.1" "mongodb-1.9.0" );
PHP_EXT_DownloadPath="http://pecl.php.net/get/"
MAKE_INSTALL="make && make install"
#Downloading install package
echo $(date +"%Y-%m-%d %H:%M:%S") ": 准备安装环境;" >${LOG_FILE}
cd ${DOWNLOAD_DIR}
#如果源文件不存在则下载
if [ ! -f "php-${PHP_VER}.tar.gz" ]; then
echo $(date +"%Y-%m-%d %H:%M:%S") ":开始下载PHP源文件;" >>${LOG_FILE}
wget -c $PHP_SRC
fi
#如果源文件存在,
if [ -f "php-${PHP_VER}.tar.gz" ]; then
#则检测是否已解压
if [ ! -d "php-${PHP_VER}" ]; then
tar -zxvf php-${PHP_VER}.tar.gz
fi
fi
cd php-${PHP_VER}
if [ -f "main/php_config.h" ];then
make clean
fi
./configure ${PHP_CFG}
if [ $? -eq 0 ]; then
echo $(date +"%Y-%m-%d %H:%M:%S") ":开始安装PHP;" >>${LOG_FILE}
make && make install
if [ $? -eq 0 ]; then
echo $(date +"%Y-%m-%d %H:%M:%S")":PHP ${PHP_VER} 安装完成" >>${LOG_FILE}
else
echo $(date +"%Y-%m-%d %H:%M:%S")":PHP ${PHP_VER} 安装失败.原因>" 2>>${LOG_FILE}
fi
else
echo $(date +"%Y-%m-%d %H:%M:%S") ":安装出错。出错信息为:" 2>>${LOG_FILE}
exit 1
fi
echo $(date +"%Y-%m-%d %H:%M:%S")":开始安装扩展">>${LOG_FILE}
#创建扩展下载目录
[ ! -d ${PHP_EXT_DIR} ] && mkdir -p ${PHP_EXT_DIR}
cd ${PHP_EXT_DIR}
if [ $? -eq 0 ];then
for PHP_EXT in ${PHP_EXT_LIST[*]};do
if [ ! -f "${PHP_EXT}.tgz" ]; then
echo $(date +"%Y-%m-%d %H:%M:%S")":开始下载扩展${PHP_EXT}" >>${LOG_FILE}
wget -c ${PHP_EXT_DownloadPath}${PHP_EXT}.tgz
fi
tar -zxvf ${PHP_EXT}.tgz
cd ${PHP_EXT_DIR}"/"${PHP_EXT}
make clean
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config && make && make install
if [ $? -eq 0 ]; then
echo $(date +"%Y-%m-%d %H:%M:%S")":${PHP_EXT} 安装完成" >>${LOG_FILE}
else
echo $(date +"%Y-%m-%d %H:%M:%S")":${PHP_EXT} 安装失败,原因>" 2>>${LOG_FILE}
fi
done
else
echo $(date +"%Y-%m-%d %H:%M:%S")": PHP扩展安装条件不具备。" >>${LOG_FILE}
echo "PHP扩展安装条件不具备。 "
fi