zoukankan      html  css  js  c++  java
  • Centos7.4和Ubuntu18.04安装PHP7.2

    安装依赖

    yum install gcc-c++ libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel

    在Ubuntu 18.04下, 需要额外补充的包有

    sudo apt install libxml2-dev libcurl4 libcurl4-openssl-dev libjpeg-dev libgmp-dev libreadline-dev libxslt libxslt-dev libzip-dev

    安装

    开发环境(在Ubuntu下貌似无效)

        --enable-phpdbg
        --enable-dtrace

    生产环境:

        --disable-phpdbg
        --disable-dtrace

    执行configure

    ./configure
    --prefix=/opt/php/php7.2.10
    --with-config-file-path=/opt/php/php7.2.10/etc
    --with-fpm-user=nginx
    --with-fpm-group=nginx
    --with-zlib-dir
    --with-freetype-dir
    --enable-mbstring
    --with-libxml-dir
    --enable-soap
    --enable-calendar
    --enable-pdo
    --with-curl
    --with-zlib
    --with-gd
    --with-pdo-sqlite
    --with-mysqli=mysqlnd
    --with-pdo-mysql=mysqlnd
    --with-mysql-sock
    --enable-mysqlnd
    --disable-rpath
    --enable-inline-optimization
    --with-bz2
    --enable-sockets
    --enable-sysvmsg
    --enable-sysvsem
    --enable-sysvshm
    --enable-pcntl
    --enable-mbregex
    --enable-exif
    --enable-bcmath
    --with-mhash
    --enable-zip
    --with-pcre-regex
    --with-jpeg-dir
    --with-png-dir
    --with-openssl
    --enable-ftp
    --with-kerberos
    --with-gettext
    --with-xmlrpc
    --with-xsl
    --enable-fpm
    --disable-debug
    --enable-shared
    --enable-fileinfo
    --enable-filter
    --with-sqlite3
    --with-libzip
    --with-iconv
    --with-cdb
    --enable-dom
    --with-gmp
    --enable-json
    --enable-mysqlnd-compression-support
    --with-pear
    --enable-opcache
    --enable-wddx
    --with-libmbfl
    --with-onig
    --with-readline
    --enable-shmop
    --enable-simplexml
    --enable-xmlreader
    --enable-xmlwriter

    遇到的问题的解决

    1. 关于re2c和bison的warning, 通过安装解决

    yum install re2c
    yum install bison

    2. 关于libzip的错误, 通过centos yum安装报版本太低, 需要编译安装

    wget https://libzip.org/download/libzip-1.5.1.tar.gz
    tar zxvf libzip-1.5.1.tar.gz 
    cd libzip-1.5.1
    more INSTALL.md 
    mkdir build
    cd build/
    cmake ..
    make
    make test
    make install

    3. 编译libzip时报centos7自带的cmake版本过低, 于是编译安装cmake

    wget https://cmake.org/files/v3.12/cmake-3.12.2.tar.gz
    tar zxvf cmake-3.12.2.tar.gz 
    cd cmake-3.12.2
    ./bootstrap
    gmake
    gmake install
    whereis cmake
    cd /usr/bin/
    ln -s /usr/local/bin/cmake cmake

    4. 出现 configure: error: off_t undefined; check your library configuration 未定义的类型 off_t错误

    off_t 类型是在头文件 unistd.h中定义的, 在32位系统 编程成 long int, 64位系统则编译成 long long int, 在进行编译的时候是默认查找64位的动态链接库, 但是默认情况下 centos 的动态链接库配置文件/etc/ld.so.conf里并没有加入搜索路径, 要将 /usr/local/lib64 /usr/lib64 这些针对64位的库文件路径加进去

    # 添加搜索路径到配置文件
    echo '/usr/local/lib64
    /usr/local/lib
    /usr/lib
    /usr/lib64'>>/etc/ld.so.conf
    # 更新配置
    ldconfig -v

    5. 在Ubuntu18.04下编译php5.6.38时, configure参数都和上面一样, 遇到两个问题: easy.h should be in <curl-dir>/include/curl/ 和 configure: error: Unable to locate gmp.h 都是因为在 /usr/include下无法找到对应的头文件, 并且在configure参数中通过 --with-gmp=/usr/include/x86_64-linux-gnu 指定无效, 在/usr/include/ 下 ln -s 才能通过. 在make时, 遇到了 openssl.c:1904:15: error: dereferencing pointer to incomplete type ‘X509_EXTENSION  , openssl.c:3485:14: error: dereferencing pointer to incomplete type ‘EVP_PKEY 这样的问题, 原因是 PHP 5.6 is receiving only security fixes and OpenSSL 1.1 is not supported. Please use PHP 7.x if you want to use OpenSSL 1.1. 在openssl1.1下就不要再用php5.6了.

    执行 make, make test, make install 完成剩下的安装

    配置PHP

    配置php

    源码包里面有配置文件, 按刚才configure里面设置的路径, 复制到 /opt/php/php7.2.10/etc
    php.ini-development     测试开发环境
    php.ini-production         生产环境

    配置php-fpm

    # 复制一份新的php-fpm配置文件
    cd /opt/php/php7.2.10/etc
    cp php-fpm.conf.default php-fpm.conf
    vi php-fpm.conf
    # 配置错误日志:
    error_log = /var/log/php-fpm.log
    # 配置pid文件:    
    pid = /var/run/php-fpm.pid
    # 保存退出
    
    cd /opt/php/php7.2.10/etc/php-fpm.d
    cp www.conf.default www.conf

    添加php-fpm到系统服务

    # 到源代码目录下将样例文件复制到系统服务目录下, 注意, 在Ubuntu18.04中, 这个目录是 /lib/systemd/system/
    cp ./sapi/fpm/php-fpm.service /usr/lib/systemd/system/
    # 配置开机启动php-fpm: 
    systemctl enable php-fpm
    # 启动php-fpm (启动前先按下一步将用户和用户组创建好, 否则启动会失败)
    systemctl start php-fpm
    # 查看状态
    systemctl status php-fpm

    创建nginx用户

    如果你在configure这一步指定的是其他的用户组和用户, 那么这里要把nginx替换掉

    建立nginx 组
    groupadd -r nginx
    # -r 表示创建的是系统组
    useradd -s /sbin/nologin -g nginx -r nginx
    # -r 表示创建的是系统用户
    id nginx

    在Nginx中添加PHP支持

    vi /opt/nginx/conf/nginx.conf
    
    # 把前面的#注释符号去掉,把script改为$document_root最终如下:
    location ~ .php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /$document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    安装Swoole扩展

    通过pecl安装

    sudo pecl install swoole
    # 根据自己系统带了哪些模块选择, 我的系统里缺少http2和postgresql, 所以这两个没选
    enable sockets supports? [no] : yes
    enable openssl support? [no] : yes
    enable http2 support? [no] :  
    enable mysqlnd support? [no] : yes
    enable postgresql coroutine client support? [no] : 
    

    然后根据提示, 在php.ini里添加相应的扩展

    ;;;;;;;;;;;;;;;;;;;;;;
    ; Dynamic Extensions ;
    ;;;;;;;;;;;;;;;;;;;;;;
    ...
    ;extension=pdo_sqlite
    ;extension=pgsql
    ;extension=shmop
    extension=mongodb
    extension=swoole
    

    重启php-fpm后, 在phpinfo()里就能看到swoole的信息了.

  • 相关阅读:
    map集合的见解、排序
    java mysql 数据类型对照
    spring 通过@Value 获取properties文件中设置了属性 ,与@Value # 和$的区别
    nginx中的超时设置,请求超时、响应等待超时等
    Linux配置多个Tomcat同时运行
    Socket TCP Server一个端口可以有多少个长连接?受到什么影响?linux最大文件句柄数量总结
    tomcat关闭后线程依然运行解决办法
    守护线程与非守护线程的区别
    SSM整合——spring4.*配置案例
    SSM事务——事务回滚如何拿到返回值
  • 原文地址:https://www.cnblogs.com/milton/p/9693215.html
Copyright © 2011-2022 走看看