我在从 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
安装依赖项。
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/
从以下位置下载 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 档案。配置 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
。如果您不删除特定于未安装的包的选项,则此命令将返回一条错误消息,告诉您必须删除哪个选项才能成功运行该命令。编译二进制文件:
make # wait until make is finished
当 make 完成后,你会看到以下消息:
Build complete. Don't forget to run 'make test'.
警告:
make test
需要很长时间才能完成,因此请不要在计算机繁忙时运行它。make install
将 PHP.ini 文件复制到安装目录
cp php.ini-development ~/bin/php-latest/lib/
重命名两个文件。
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
为您的二进制文件创建符号链接。
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
将本地 PHP 链接到 php 命令。您需要注销然后重新登录,以便 php 切换到本地版本,而不是从默认 Ubuntu 存储库安装的版本。
# add this to .bashrc if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi
启动 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 权限的信息。