编译安装PHP7.3.5

作者: 独孤游侠 | 来源:发表于2019-05-16 21:29 被阅读15次

    系统 centos7

    1.官网下载最新文档版本
    https://www.php.net/downloads.php#v7.3.5
    锚点后的版本号可以不要,建议下载最新文档版

    2.xshell使用rz命令 或者 xftp上传到/usr/local/src/ 并在该目录下解压

    cd /usr/local/src
    tar -vxf php-7.3.5.tar.gz
    cd php-7.3.5
    

    3.配置参数[这里坑比较多,网上的很多配置参数依然有问题,主要是配置参数中的扩展还会7以前的,有部分已经不支持了]
    3.1) mysql扩展
    php7里已经不支持mysql扩展,
    所以如果你的老系统里,
    使用的是mysql来操作数据库,
    那么需要改为mysqli,PDO之类的操作。

    3.2) memcache扩展
    memcached是很多web服务器用到的一个缓存系统,
    以前老版本的php的memcache扩展是无法安装到php7上的,
    需要一个新的memcache扩展

    3.3) 不支持ereg_replace()函数
    很多人使用以前老版本的php开发时,
    使用ereg_replace()函数,
    php7后不支持,
    解决的方法一般是把ereg_replace()使用preg_replace()函数替换

    3.4) php7.1后不支持mcrypt系列函数
    mcrypt其实也是一个php扩展,
    主要用来加密和解密数据,
    php7.1版本后,
    就不支持mcrypt扩展的函数。

    如果你的网站中,
    有使用到mcrypt相关函数,
    最多升级到php7.0.*的版本,

    如果升级到php7.1以上版本时,
    需要自己重新写相关的加密解密函数,
    官方推荐使用openssl_*系列的函数替换mcrypt系列函数

    这里也是网上的 去除了部分无法配置的参数 已经编译成功
    如果缺少了依赖的扩展库,后续单独安装

    3.5) configure: error: off_t undefined; check your library configuration
    off_t 类型是在 头文件 unistd.h中定义的,在32位系统 编译成 long int ,64位系统则编译成 long long int ,这里题主的系统应该是 64位的吧,在进行编译的时候 是默认查找64位的动态链接库,但是默认情况下 centos 的动态链接库配置文件/etc/ld.so.conf里并没有加入搜索路径,这个时候需要将 /usr/local/lib64 /usr/lib64 这些针对64位的库文件路径加进去。

    
    
    ./configure --prefix=/usr/local/php7 --enable-fpm \
    --with-zlib \
    --enable-inline-optimization \
     --disable-debug \
    --disable-rpath \
     --enable-shared \
    --enable-opcache \
    --with-fpm-user=www \
    --with-fpm-group=www \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --with-gettext \
    --enable-mbstring \
    --with-iconv \
    --with-mhash \
    --with-openssl \
    --enable-bcmath \
    --enable-soap \
    --with-libxml-dir \
    --enable-pcntl \
    --enable-shmop \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-sockets \
    --with-curl \
    --with-zlib \
    --enable-zip \
    --with-bz2 \
    --with-readline
    
    

    4.make [这里遇到内存不足,我是阿里云1g内存,网上都是用文件创建交换分区作为虚拟内存.猜测是,内存是高速交换信息的"硬盘", 普通的硬盘也可以当做"内存"使用来临时解决内存不足的情况]

    sudo -s     #进入root用户模式
    dd if=/dev/zero of=/swap bs=1024 count=1M #创建一个大小为1G的文件/swap
    ll -h /swap    #可以看到已为/swap分配了1G
    

    使用mkswap将/tmp/swap文件格式化为swap的文件格式

    mkswap /swap
    

    使用swapon将/tmp/swap启动

    free          #查看
    swapon /swap    #启动/swap
    free          #查看
    swapon -s          #查看
    echo "/swap/swap    swap    swap  defaults    0 0"  >> /etc/fstab    #设置成永久生效,开机自启.也可以手动启用
    # swapon /swap 开     ||  swapoff /swap  关
    

    有的教程里会在make后加上参数 -j4
    这个跟cpu的核心数有关,通常几核心cpu 数字就填几,说是可以让编译更快[实际上并不清楚是利用核心数编译更快,还是编译后的软件可以根据核心数调节性能,后面再研究]
    但是通常不能大过核心数 默认不填 相当于 -j1
    我的是单核CPU 所以默认直接make

    相关文章

      网友评论

        本文标题:编译安装PHP7.3.5

        本文链接:https://www.haomeiwen.com/subject/tjmwaqtx.html