如何构建 PHP 7.3?

如何构建 PHP 7.3?

我在从 git 构建 PHP 7.3 包时遇到问题。目前,我使用的是 Ubuntu 16.04 和 utdatet php 7.0.x。(在我的 VPS 上无法将 Ubuntu 16.04 升级到 18.04,因为它在启动时崩溃。我只有 Virtuozzo 可以调试,但我找不到它崩溃的位置,因此升级到 18.04 还不是一个选择。)

我迄今为止的步骤:

我已经安装了用于构建的所有程序(git、build essential、libtool、bison 和 re2c)。

我使用以下命令从 GitHub 克隆了 git:

git clone https://github.com/php/php-src.git 

然后我选择了我想要的分支:

git checkout PHP-7.3 

然后我跑了:

./buildconf

你下一步怎么做?

我需要以下软件包:

  php7.3
  libapache2-mod-php7.3
  php7.3-mysql
  mysql 服务器

我没有寻找 PPA,因为我想自己做,以便通过实践来学习。

答案1

  1. 安装依赖项。

    Ubuntu 16.04:

    sudo apt install autoconf automake bison build-essential curl flex \
      libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline7 \
      libreadline-dev libsqlite3-dev libzip-dev libzip4 nginx openssl \
      pkg-config re2c sqlite3 zlib1g-dev libonig2 libonig-dev
    

    Ubuntu 18.04:

    sudo apt install autoconf automake bison build-essential curl flex \
      libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline7 \
      libreadline-dev libsqlite3-dev libzip-dev libzip4 nginx openssl \
      pkg-config re2c sqlite3 zlib1g-dev libonig4 libonig-dev
    

    Ubuntu 20.04:

    sudo apt install autoconf automake bison build-essential curl flex \
      libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline8 \
      libreadline-dev libsqlite3-dev libzip-dev libzip5 nginx openssl \
      pkg-config re2c sqlite3 zlib1g-dev libonig5 libonig-dev
    

    Ubuntu 22.04-23.04:

    sudo apt install autoconf automake bison build-essential curl flex \
      libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline8 \
      libreadline-dev libsqlite3-dev libzip-dev libzip4 nginx openssl \
      pkg-config re2c sqlite3 zlib1g-dev libonig5 libonig-dev
    

    为了不覆盖系统上任何现有的 PHP 安装,请在主目录中安装 PHP。为 PHP 二进制文件创建一个目录。

     mkdir -p ~/bin/php7-latest/
    
  2. 从以下位置下载 PHP 7.3GitHub,解压后使用cd新目录更改目录。您也可以从 GitHub 下载其他版本的 PHP,方法是将 https://github.com/php/php-src/tree/PHP-7.3 更改为 https://github.com/php/php-src/tree/PHP-XX 您也可以从以下位置下载 PHP 7.3php.net/downloads.php安装说明完全相同。通常,这是下载 PHP 7.3 的首选方式,但我使用的是来自https://github.com/php/在此答案中,以匹配问题中询问的 PHP 7.3 档案。

  3. 配置 PHP。删除不需要的任何选项(如 MySQL 或 Postgres (--with-pdo-pgsql))

     ./configure --prefix=$HOME/bin/php-latest \
         --enable-mysqlnd \
         --with-pdo-mysql \
         --with-pdo-mysql=mysqlnd \
         --with-pdo-pgsql=/usr/bin/pg_config \
         --enable-bcmath \
         --enable-fpm \
         --with-fpm-user=www-data \
         --with-fpm-group=www-data \
         --enable-mbstring \
         --enable-phpdbg \
         --enable-shmop \
         --enable-sockets \
         --enable-sysvmsg \
         --enable-sysvsem \
         --enable-sysvshm \
         --enable-zip \
         --with-libzip=/usr/lib/x86_64-linux-gnu \
         --with-zlib \
         --with-curl \
         --with-pear \
         --with-openssl \
         --enable-pcntl \
         --with-readline
    

    除非未安装 PostgreSQL,否则您可能不需要删除任何选项--with-pdo-pgsql=/usr/bin/pg_config。如果您不删除特定于未安装的包的选项,则此命令将返回一条错误消息,告诉您必须删除哪个选项才能成功运行该命令。

  4. 编译二进制文件:

    make # wait until make is finished
    

    当 make 完成后,你会看到以下消息:

    Build complete.
    Don't forget to run 'make test'.
    

    警告:make test需要很长时间才能完成,因此请不要在计算机繁忙时运行它。

    make install
    
  5. 将 PHP.ini 文件复制到安装目录

    cp php.ini-development ~/bin/php-latest/lib/
    
  6. 重命名两个文件。

    cd ~/bin/php-latest/etc/  
    mv php-fpm.conf.default php-fpm.conf
    mv php-fpm.d/www.conf.default php-fpm.d/www.conf
    
  7. 为您的二进制文件创建符号链接。

    cd ~/bin
    ln -s php-latest/bin/php php
    ln -s php-latest/bin/php-cgi php-cgi
    ln -s php-latest/bin/php-config php-config
    ln -s php-latest/bin/phpize phpize
    ln -s php-latest/bin/phar.phar phar
    ln -s php-latest/bin/pear pear
    ln -s php-latest/bin/phpdbg phpdbg
    ln -s php-latest/sbin/php-fpm php-fpm
    
  8. 将本地 PHP 链接到 php 命令。您需要注销然后重新登录,以便 php 切换到本地版本,而不是从默认 Ubuntu 存储库安装的版本。

    # add this to .bashrc
    if [ -d "$HOME/bin" ] ; then
      PATH="$HOME/bin:$PATH"
    fi
    
  9. 启动 PHP-FPM

    sudo ~/bin/php-latest/sbin/php-fpm  
    

    如果你以普通用户身份运行上述命令而不使用 sudo,它将显示以下通知:

    NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root.    
    NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root.    
    

来源:php-src-master 目录中的安装文件来自https://github.com/php/php-src.git包含以下链接https://php.net/install这些说明是从哪个来源修订的。除了几个小修订之外,我还添加了有关如何在主目录中本地安装 PHP 7.3 而无需 root 权限的信息。

相关内容