#!/usr/bin/env bash Check_Stack_Choose() { Check_Stack if [[ "${Get_Stack}" = "lnmp" && "${Stack}" = "" ]]; then echo "Current Stack: ${Get_Stack}, please run: ./upgrade.sh php" exit 1 elif [[ "${Get_Stack}" = "lnmpa" || "${Get_Stack}" = "lamp" ]] && [[ "${Stack}" = "lnmp" ]]; then echo "Current Stack: ${Get_Stack}, please run: ./upgrade.sh phpa" exit 1 fi } Start_Upgrade_PHP() { Check_Stack_Choose Check_DB php_version="" Get_PHP_Ext_Dir echo "Current PHP Version:${Cur_PHP_Version}" echo "You can get version number from http://www.php.net/" read -p "Please enter a PHP Version you want: " php_version if [ "${php_version}" = "" ]; then echo "Error: You must enter a corrent php version!!" exit 1 fi Press_Start cd ${cur_dir}/src if [ -s php-${php_version}.tar.bz2 ]; then echo "php-${php_version}.tar.bz2 [found]" else echo "Notice: php-$php_version.tar.bz2 not found!!!download now..." Get_Country if [ "${country}" = "CN" ]; then Download_Files http://php.vpszt.com/php-${php_version}.tar.bz2 php-${php_version}.tar.bz2 if [ $? -ne 0 ]; then Download_Files https://www.php.net/distributions/php-${php_version}.tar.bz2 php-${php_version}.tar.bz2 fi else Download_Files https://www.php.net/distributions/php-${php_version}.tar.bz2 php-${php_version}.tar.bz2 if [ $? -ne 0 ]; then Download_Files http://php.vpszt.com/php-${php_version}.tar.bz2 php-${php_version}.tar.bz2 fi fi if [ $? -eq 0 ]; then echo "Download php-${php_version}.tar.bz2 successfully!" else Download_Files http://museum.php.net/php5/php-${php_version}.tar.bz2 php-${php_version}.tar.bz2 if [ $? -eq 0 ]; then echo "Download php-${php_version}.tar.bz2 successfully!" else echo "You enter PHP Version was:"${php_version} Echo_Red "Error! You entered a wrong version number, please check!" exit 1 fi fi fi if echo "${php_version}" | grep -Eqi '^5.2.';then Download_Files ${Download_Mirror}/web/phpfpm/php-${php_version}-fpm-0.5.14.diff.gz php-${php_version}-fpm-0.5.14.diff.gz fi lnmp stop if [ "${Stack}" = "lnmp" ]; then mv /usr/local/php /usr/local/oldphp${Upgrade_Date} mv /etc/init.d/php-fpm /usr/local/oldphp${Upgrade_Date}/init.d.php-fpm.bak.${Upgrade_Date} else if echo "${Cur_PHP_Version}" | grep -Eqi '^7.';then mv /usr/local/apache/modules/libphp7.so /usr/local/apache/modules/libphp7.so.bak.${Upgrade_Date} else mv /usr/local/apache/modules/libphp5.so /usr/local/apache/modules/libphp5.so.bak.${Upgrade_Date} fi mv /usr/local/php /usr/local/oldphp${Upgrade_Date} \cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak.${Upgrade_Date} if echo "${Cur_PHP_Version}" | grep -Eqi '^7.' && echo "${php_version}" | grep -Eqi '^5.';then sed -i '/libphp7.so/d' /usr/local/apache/conf/httpd.conf fi fi Check_PHP_Option Install_PHP_Dependent } Install_PHP_Dependent() { echo "Installing Dependent for PHP..." if [ "$PM" = "yum" ]; then for packages in c-ares-devel libicu-devel libxslt libxslt-devel xz expat-devel libzip-devel bzip2 bzip2-devel sqlite-devel oniguruma-devel; do yum -y install $packages; done elif [ "$PM" = "apt" ]; then export DEBIAN_FRONTEND=noninteractive apt-get update for packages in libc-ares-dev libicu-dev e2fsprogs libxslt1.1 libxslt1-dev libc-client-dev xz-utils libexpat1-dev bzip2 libbz2-dev libsqlite3-dev libonig-dev; do apt-get --no-install-recommends install -y $packages; done fi if [ "${DISTRO}" = "CentOS" ] && echo "${CentOS_Version}" | grep -Eqi "^8"; then Check_PowerTools dnf --enablerepo=${repo_id} install rpcgen re2c -y dnf --enablerepo=${repo_id} install oniguruma-devel -y fi if echo "${CentOS_Version}" | grep -Eqi "^7" || echo "${RHEL_Version}" | grep -Eqi "^7"; then yum -y install epel-release if [ "${country}" = "CN" ]; then sed -i "s@^#baseurl=http://download.fedoraproject.org/pub@baseurl=http://mirrors.aliyun.com@g" /etc/yum.repos.d/epel*.repo sed -i "s@^metalink@#metalink@g" /etc/yum.repos.d/epel*.repo fi yum -y install oniguruma oniguruma-devel if [ "${CheckMirror}" = "n" ]; then cd ${cur_dir}/src/ yum -y install ./oniguruma-6.8.2-1.el7.x86_64.rpm yum -y install ./oniguruma-devel-6.8.2-1.el7.x86_64.rpm fi fi Install_Icu4c if [ -d /usr/include/x86_64-linux-gnu/curl ]; then ln -sf /usr/include/x86_64-linux-gnu/curl /usr/include/ elif [ -d /usr/include/i386-linux-gnu/curl ]; then ln -sf /usr/include/i386-linux-gnu/curl /usr/include/ fi if [ -d /usr/include/arm-linux-gnueabihf/curl ]; then ln -sf /usr/include/arm-linux-gnueabihf/curl /usr/include/ fi ldconfig } Check_PHP_Upgrade_Files() { rm -rf ${cur_dir}/src/php-${php_version} if [ "${Stack}" = "lnmp" ]; then if [[ -s /usr/local/php/sbin/php-fpm && -s /etc/init.d/php-fpm && -s /usr/local/php/etc/php.ini && -s /usr/local/php/bin/php ]]; then Echo_Green "======== upgrade php completed ======" else Echo_Red "======== upgrade php failed ======" Echo_Red "upgrade php log: /root/upgrade_lnmp_php.log" echo "You upload upgrade_lnmp_php.log to LNMP Forum for help." fi else if echo "${php_version}" | grep -Eqi '^7.';then if [[ -s /usr/local/apache/bin/httpd && -s /usr/local/apache/modules/libphp7.so && -s /usr/local/apache/conf/httpd.conf ]]; then Echo_Green "======== upgrade php completed ======" else Echo_Red "======== upgrade php failed ======" Echo_Red "upgrade php log: /root/upgrade_a_php.log" echo "You upload upgrade_a_php.log to LNMP Forum for help." fi else if [[ -s /usr/local/apache/modules/libphp5.so && -s /usr/local/php/etc/php.ini && -s /usr/local/php/bin/php ]]; then Echo_Green "======== upgrade php completed ======" else Echo_Red "======== upgrade php failed ======" Echo_Red "upgrade php log: /root/upgrade_a_php.log" echo "You upload upgrade_a_php.log to LNMP Forum for help." fi fi fi } Upgrade_PHP_52() { if [ ${DB_Name} == "None" ]; then echo "MySQL or MariaDB not found!" exit 1 fi Export_PHP_Autoconf cd ${cur_dir}/src && rm -rf php-${php_version} tar jxf php-${php_version}.tar.bz2 if [ "${Stack}" = "lnmp" ]; then gzip -cd php-${php_version}-fpm-0.5.14.diff.gz | patch -d php-${php_version} -p1 fi cd php-${php_version}/ patch -p1 < ${cur_dir}/src/patch/php-5.2.17-max-input-vars.patch patch -p0 < ${cur_dir}/src/patch/php-5.2.17-xml.patch patch -p1 < ${cur_dir}/src/patch/debian_patches_disable_SSLv2_for_openssl_1_0_0.patch patch -p1 < ${cur_dir}/src/patch/php-5.2-multipart-form-data.patch ./buildconf --force if [ "${Stack}" = "lnmp" ]; then ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/conf.d --with-mysql=${MySQL_Dir} --with-mysqli=${MySQL_Config} --with-pdo-mysql=${MySQL_Dir} --with-iconv-dir --with-freetype-dir=/usr/local/freetype --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-discard-path --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization ${with_curl} --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf ${with_openssl} --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --with-mime-magic ${PHP_Modules_Options} else ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-config-file-scan-dir=/usr/local/php/conf.d --with-apxs2=/usr/local/apache/bin/apxs --with-mysql=${MySQL_Dir} --with-mysqli=${MySQL_Config} --with-pdo-mysql=${MySQL_Dir} --with-iconv-dir --with-freetype-dir=/usr/local/freetype --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-discard-path --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization ${with_curl} --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf ${with_openssl} --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --with-mime-magic ${PHP_Modules_Options} fi PHP_Make_Install mkdir -p /usr/local/php/{etc,conf.d} \cp php.ini-dist /usr/local/php/etc/php.ini cd ../ Ln_PHP_Bin # php extensions sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"\n#' /usr/local/php/etc/php.ini sed -i 's#output_buffering =.*#output_buffering = On#' /usr/local/php/etc/php.ini sed -i 's/post_max_size =.*/post_max_size = 50M/g' /usr/local/php/etc/php.ini sed -i 's/upload_max_filesize =.*/upload_max_filesize = 50M/g' /usr/local/php/etc/php.ini sed -i 's/;date.timezone =.*/date.timezone = PRC/g' /usr/local/php/etc/php.ini sed -i 's/short_open_tag =.*/short_open_tag = On/g' /usr/local/php/etc/php.ini sed -i 's/; cgi.fix_pathinfo=.*/cgi.fix_pathinfo=0/g' /usr/local/php/etc/php.ini sed -i 's/max_execution_time =.*/max_execution_time = 300/g' /usr/local/php/etc/php.ini sed -i 's/disable_functions =.*/disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket/g' /usr/local/php/etc/php.ini Pear_Pecl_Set cd ${cur_dir}/src if [ "${Is_64bit}" = "y" ] ; then Download_Files ${Download_Mirror}/web/zend/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz tar zxf ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz mkdir -p /usr/local/zend/ \cp ZendOptimizer-3.3.9-linux-glibc23-x86_64/data/5_2_x_comp/ZendOptimizer.so /usr/local/zend/ else Download_Files ${Download_Mirror}/web/zend/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz tar zxf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz mkdir -p /usr/local/zend/ \cp ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp/ZendOptimizer.so /usr/local/zend/ fi if [ "${Is_ARM}" != "y" ]; then cat >/usr/local/php/conf.d/002-zendoptimizer.ini</usr/local/php/conf.d/002-zendguardloader.ini</usr/local/php/etc/php-fpm.conf</usr/local/php/conf.d/002-zendguardloader.ini</usr/local/php/etc/php-fpm.conf</usr/local/php/conf.d/002-zendguardloader.ini</usr/local/php/etc/php-fpm.conf</usr/local/php/etc/php-fpm.conf</usr/local/php/etc/php-fpm.conf</usr/local/php/etc/php-fpm.conf</usr/local/php/etc/php-fpm.conf</usr/local/php/etc/php-fpm.conf<