• CentOS 7 编译安装高版本 PHP 7 步骤记录(未完待续)


    基础环境

    阿里云-轻量应用服务器 CentOS 7.6
    编译 PHP 版本 7.4.13

    注意

    本内容目前仅作步骤记录和复现,该流程不适用于想要正确流程的人(但大体的正确流程可从中摘出

    下载源码包

    国内镜像:http://php.p2hp.com

    • 切换至某一目录,本人为:
    mkdir /data
    cd /data
    
    • 下载:
    wget https://mirrors.sohu.com/php/php-7.4.13.tag.gz
    
    • 解压:
    tar -zxvf php-7.4.13.tar.gz
    

    准备安装

    cd php-7.4.13
    
    • 查看编译的配置参数
    ./configure --help
    
    • 配置

    指定安装目录:

    ./configure --prefix=/usr/local/php7.4
    

    php-fpm,暂时未使用,但是在后续的操作中顺路查询了后续开启的方法,得到的建议是重新带参数编译,即需要的话建议在开始阶段就加上此参数

    --enable-fpm
    

    执行 make,报错:未找到 sqlite3,因基本使用不到 sqlite,故使用 ./configure --help | grep sqlite 查看相关编译参数后,添加参数:

    --without-sqlite3 --without-pdo-sqlite
    

    再次执行 make,报错:未找到 libxml-2.0,结合百度和 yum search libxml2,安装:

    yum install -y libxml2 libxml2-devel
    
    • 编译安装,以下是两条命令,可分开执行
    make && make install
    
    • 其他配置
    ln -s /usr/local/php7.4/bin/php /usr/local/bin/php74 # 配置可直接执行的 php 命令,这里是 php74
    cp /usr/local/php7.4/etc/php-fpm.conf.default /usr/local/php7.4/etc/php-fpm.conf # 暂未使用
    cp /usr/local/php7.4/etc/php-fpm.d/www.conf.default /usr/local/php7.4/etc/php-fpm.d/www.conf # 暂未使用
    cp */php.ini-development | */php.ini-production /usr/local/php7.4/etc/php.ini # 暂未使用
    
    • 安装 Composer

    报错 Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?,结合百度(参考链接)和 ./configure --help | grep openssl,可以在配置阶段重新添加以下参数进行配置后,重新配置、编译、安装:

    --with-openssl
    

    openssl 并未在此安装,考虑到后期需要补充添加的模块较多,此时开始尝试在不重新编译的情况下添加模块(参考链接

    已编译安装的 php 添加模块

    openssl 为例

    • 切换到解压的源目录下的 /data/php-7.4.13/ext/openssl,执行:
    /usr/local/php7.4/bin/phpize
    

    报错:

    Cannot find config.m4. Make sure that you run '/usr/local/php7.4/bin/phpize' in the top level source directory of the module
    

    ls 查看,没有 config.m4,但是有 config0.m4,将该文件复制或移动并重命名(参考链接)为 config.m4
    重新执行 phpize,报错

    Cannot find autoconf
    

    安装

    yum install autoconf
    

    再次执行 phpize
    当前目录下生成 configure 等文件

    ./configure
    

    报错

    configure: error: Cannot find php-config. Please use --with-php-config=PATH
    

    执行

    ./configure --with-php-config=/usr/local/php7.4/bin/php-config
    

    报错

    no package 'openssl' found
    

    执行 openssl version 发现是有 openssl 的,查看 ./configure --help | grep openssl,添加参数后执行

    ./configure --with-php-config=/usr/local/php7.4/bin/php-config --with-openssl
    

    再次报错 no package 'openssl' found,安装 yum install openssl-devel (参考链接) 后执行

    ./configure --with-php-config=/usr/local/php7.4/bin/php-config
    

    make

    Libraries have been installed in:
       /data/php-7.4.13/ext/openssl/modules
    

    make install

    Installing shared extensions:     /usr/local/php7.4/lib/php/extensions/no-debug-non-zts-20190902/
    

    此后在多次尝试修改 php.ini 中的 extension_dir 以及 开启 openssl 无果后,,考虑是否是编译的 so 文件需要 apache 来加载,转而开始编译安装 apache,因为需要关联 apache 与 php,故重新编译,参数:

    ./configure --prefix=/usr/local/php7.4 --without-sqlite3 --without-pdo-sqlite --enable --with-apxs2=/usr/local/apache2.4/bin/apxs/
    

    编译后,在 /usr/local/apache2.4/modules/ 目录会多出 libphp7.so,同时 /usr/local/apache2.4/conf/httpd.conf 最后会多出 LoadModule php7_module modules/libphp7.so,再加上

    AddType application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
    

    并修改

    <IfModule dir_module>
        DirectoryIndex index.html index.php
    </IfModule>
    

    /usr/local/apache2.4/hotdocs/index.php <?php phpinfo(); ?> 进行关联测试
    重复上面部分操作,无果

    openssl 问题解决

    启发链接

    php74 --ini
    Configuration File (php.ini) Path: /usr/local/php7.4/lib
    Loaded Configuration File:         (none)
    Scan for additional .ini files in: (none)
    Additional .ini files parsed:      (none)
    

    据此,php.ini 复制的目标路径不应该是 /usr/local/php7.4/etc/php.ini,应该是 /usr/local/php7.4/lib/php.ini,可以先复制到 etc 目录下,再添加 ln -s 软链接过去
    或者是在编译阶段添加参数 --with-config-file-path=/usr/local/php7.4/etc 参考链接




  • 相关阅读:
    ffmpeg mp3转ogg的命令
    四个很好的开源app项目
    iOS 开发者必不可少的 75 个工具
    几点iOS开发技巧
    100 Most Influential Books According to Stack Overflow
    iOS图形处理和性能(转)
    Objc的底层并发API(转)
    GCD CoreData 简化CoreData操作(转)
    微信扫一扫背后的秘密:基于运动估计的智能传图算法(转)
    Objective-C 的 API 设计(转)
  • 原文地址:https://www.cnblogs.com/zhaojjiang/p/14111254.html
Copyright © 2020-2023  润新知