在 Ubuntu 上编译和安装 PHP7

在本周末的 LAMP and Beyond III 活动(由 PHPNW 举办)中,我们为自己设定了让 PHP7 一展身手的任务。下面是该会话中的一些节点。

这假设您已经安装了 PHP5.6 以及 Apache 和 MySQL。通过 apt-get 安装 PHP5.6 很好,因为我们只需要提供一些依赖项。

要获取 PHP7 的代码,您需要从 Github 上的 PHP 存储库克隆。

git clone [email protected]:php/php-src.git php-src

进入 php-src 目录并运行 ./buildconf 命令,这将生成一个配置文件。

./buildconf

在运行 config 之前,您需要安装一些依赖项(一两个)。

sudo apt-get install autoconf bison libxml2-dev apache2-dev systemtap-sdt-dev openssl pkg-config libssl-dev libcurl4-openssl-dev libbz2-dev libgdbm-dev libjpeg62 libjpeg62-dev libpng12-0 libpng12-dev libfreetype6-dev libicu-dev libiodbc2-dev libxslt1-dev

现在您可以运行 ./configure 来配置 PHP。您需要添加一些标志,让 PHP 知道要安装哪些扩展以及某些软件所在的位置。

./configure --prefix=/usr/local/php7/7.0.0 --localstatedir=/usr/local/var --sysconfdir=/usr/local/etc/php/7 --with-config-file-path=/usr/local/etc/php/7 --with-config-file-scan-dir=/usr/local/etc/php/7/conf.d --mandir=/usr/local/php7/7.0.0/share/man --enable-bcmath --enable-calendar --enable-dba --enable-exif --enable-ftp --enable-gd-native-ttf --enable-intl --enable-mbregex --enable-mbstring --enable-shmop --enable-soap --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --enable-zip --with-freetype-dir=/usr/local/opt/freetype --with-gd --with-gettext=/usr/local/opt/gettext --with-iconv-dir=/usr --with-icu-dir=/usr/local/opt/icu4c --with-jpeg-dir=/usr/local/opt/jpeg --with-kerberos=/usr --with-libedit --with-mhash --with-ndbm=/usr --with-openssl=/usr/local/opt/openssl --with-pdo-odbc=unixODBC,/usr/local/opt/unixodbc --with-png-dir=/usr/local/opt/libpng --with-unixODBC=/usr/local/opt/unixodbc --with-xmlrpc --with-zlib=/usr/local/opt/zlib --with-apxs2=/usr/bin/apxs --libexecdir=/usr/local/php7/7.0.0/libexec --with-bz2=/usr --disable-debug --enable-fpm --with-fpm-user=_www --with-fpm-group=_www --with-curl --with-xsl=/usr --with-ldap --with-ldap-sasl=/usr --with-mysql-sock=/tmp/mysql.sock --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --disable-opcache --enable-pcntl --enable-dtrace --disable-phpdbg --enable-zend-signals

配置完成后,您需要编译 PHP7。使用 make 命令执行此操作。

make

完成后,您可以选择使用“make test”命令运行 PHP 测试套件。

make test

最后,您可以运行“make install”将 PHP7 安装到您的系统中。您需要以 root 身份运行此步骤,因为它更新了一些系统文件。

sudo make install

完成后,您需要设置 Apache 以使用新版本的 PHP。以下几行将禁用原始 PHP5 版本并启用新的 PHP7 版本。

sudo a2dismod php5
sudo service apache2 restart

缺少的一件事是 PHP7 配置文件。幸运的是,PHP5 版本与 PHP7 配合得很好,因此需要将其复制过来。

sudo cp /etc/apache2/mods-available/php5.conf /etc/apache2/mods-enabled/php7.conf

您现在需要做的就是重新启动 Apache2 以使更改生效。

sudo service apache2 restart

如果您想在命令行上运行 PHP,那么您需要将当前系统 PHP 与 PHP7 版本重新链接。要找出当前 PHP 命令行客户端的安装位置,请运行 which 命令。

which php

然后,您可以使用上一个命令的输出运行以下命令以换出您的 PHP cli 版本。

sudo rm -rf /usr/bin/php && sudo ln -s /usr/local/php7/7.0.0/bin/php /usr/bin/php

现在,当您在命令行上运行 PHP 时,您将运行 PHP7。

$ php -v
PHP 7.0.0-dev (cli) (built: Apr 11 2015 12:11:25)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies

您现在正在运行 PHP7!