网站搜索

如何在 CentOS 7/Debian 8 上安装 PHP 7 以及 Apache 和 MariaDB


上周(更准确地说是2015 年 8 月 21 日),PHP 开发团队宣布推出最新版本的 PHP 7,并鼓励全球用户和开发人员进行测试它。

但是,我们必须注意,由于这是一个RC候选发布)版本,因此预计它可能存在错误或与现有设置不兼容,因此要求用户使用错误跟踪系统报告它们,并且当 PHP 7 仍处于该阶段时,不要在生产中使用 PHP 7。

好的一面是这个版本包含了一些修复(您可能需要参考项目的 GitHub 存储库中的此页面以获取新功能和增强功能的详细列表),其中最显着的功能是与以前的版本相比,性能显着提高。

本文将引导您完成在 CentOS 7 上从源代码 tarball 安装和编译 PHP 7 RC1 以及 ApacheMariaDB 的过程Debian 8 Jessie。相同的说明也适用于基于 CentOS 的发行版,例如 RHELFedoraScientific LinuxDebian< 基于例如 Ubuntu/Mint

在 CentOS 7 和 Debian 8 中安装 PHP 7

正如简介中所述,由于此版本是RC版本而不是稳定版本,因此我们不能合理地期望在存储库中找到它。因此,我们必须下载源代码并从头开始编译程序。

然而,在此之前,我们需要记住,为了更好地利用 PHP 7,也许最好的尝试方法是将其与 Apache 一起安装和 MariaDB – 我们可以在存储库中找到:

在 CentOS 7 上


yum update && yum install httpd mariadb mariadb-server

在 Debian 8 上


aptitude update && aptitude install apache2 mariadb-server mariadb-client mariadb.common

无论哪种情况,都可以下载并提取包含 PHP 源代码的 tarball,如下所示:


wget https://downloads.php.net/~ab/php-7.0.0RC1.tar.gz
tar xzf php-7.0.0RC1.tar.gz -C /opt

完成后,让我们进入 /opt/php-7.0.0RC1 并使用 –force 开关执行 buildconf 脚本,以强制RC版本的构建:


ls


cd /opt/php-7.0.0RC1.tar.gz
./buildconf --force

现在是时候执行我们众所周知的configure命令了。虽然以下选项将确保标准 PHP 7 安装,但您可以参考 PHP 手册中的完整选项列表,以便根据您的需要更好地自定义安装:


./configure \
--prefix=$HOME/php7/usr \
--with-config-file-path=$HOME/php7/usr/etc \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-curl \
--with-mcrypt \
--with-iconv \
--with-gmp \
--with-pspell \
--with-gd \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-freetype-dir=/usr \
--enable-gd-native-ttf \
--enable-gd-jis-conv \
--with-openssl \
--with-pdo-mysql=/usr \
--with-gettext=/usr \
--with-zlib=/usr \
--with-bz2=/usr \
--with-recode=/usr \
--with-mysqli=/usr/bin/mysql_config \
--with-apxs2

如果您遇到以下错误:


configure: error: no acceptable C compiler found in $PATH
see 'config.log' for more details

只需使用以下命令安装gcc和依赖项,然后再次运行上面的configure命令即可。


yum install gcc       [On CentOS 7 box]
aptitude install gcc  [On Debian 8 box]

您将开始编译 PHP 7,这可能需要一段时间。如果还有其他缺少的库或资源,此过程将失败,但您始终可以安装它们并再次运行配置。

例如,在收到以下错误消息后,我必须安装 libxml2-devel


configure: error: xml2-config not found. Please check your libxml2 installation.

不幸的是,我们不可能涵盖所有案例场景,因为安装的软件可能因系统而异。在安装过程中,您可能需要参考此页面,其中概述了从源代码安装 PHP 时可能遇到的几个错误及其各自的解决方案。

在 CentOS 7 上

以下是我必须在 CentOS 7 机器中安装的软件包的完整列表,然后才能完成配置过程:


gcc
libxml2-devel
pkgconfig
openssl-devel
bzip2-devel
curl-devel
libpng-devel
libpng-devel
libjpeg-devel
libXpm-devel
freetype-devel
gmp-devel
libmcrypt-devel
mariadb-devel
aspell-devel
recode-devel
httpd-devel

您可以使用一个 yum 命令安装上述所有必需的软件包,如图所示。


yum install gcc libxml2-devel pkgconfig openssl-devel bzip2-devel libpng-devel libpng-devel libjpeg-devel libXpm-devel freetype-devel gmp-devel libmcrypt-devel mariadb-devel aspell-devel recode-devel httpd-devel

以下消息表明配置成功完成:

然后运行,


make
make install

安装完成后,您可以使用命令行检查版本:

在 Debian 8 上

Debian 中,我必须安装以下软件包才能成功完成配置过程:


make
libxml2-dev
libcurl4-openssl-dev
libjpeg-dev
libpng-dev
libxpm-dev
libmysqlclient-dev
libicu-dev
libfreetype6-dev
libxslt-dev
libssl-dev
libbz2-dev
libgmp-dev
libmcrypt-dev
libpspell-dev 
librecode-dev
apache2-dev

您可以在 Debian 8 上使用 apt-get 命令安装上述所有必需的软件包。


apt-get install make libxml2-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libxpm-dev libmysqlclient-dev libicu-dev libfreetype6-dev libxslt-dev libssl-dev libbz2-dev libgmp-dev libmcrypt-dev libpspell-dev librecode-dev apache2-dev

然后将 –with-libdir=/lib/x86_64-linux-gnu 添加到配置选项,并创建到 gmp.h 头文件的以下符号链接:


ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h

然后像前面的例子一样运行makemake install。在 10-15 分钟内编译应该完成,我们可以像以前一样验证安装的 PHP 版本:


make
make install

设置 php.ini 并测试 PHP 7 安装

当您从源代码安装 PHP 时,会提供两个示例 php.ini。在本例中,它们位于 /opt/php-7.0.0RC1 内:


ls -l /opt/php-7.0.0RC1 | grep php.ini

您现在需要将其中之一复制到 /usr/local/lib,根据安装说明,该文件被指定为该文件的默认位置:


cp /opt/php-7.0.0RC1/php.ini-development /usr/local/lib

并且不要忘记将此配置指令添加到 Apache 的主配置文件中。


/etc/httpd/conf/httpd.conf    [On CentOS 7 box]
/etc/apache2/apache2.conf in  [On Debian 8 box] 

LoadModule php7_module        /usr/lib64/httpd/modules/libphp7.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

Debian 8 中,您可以省略 LoadModule 行,并且还需要删除并创建以下指向指定 Apache 模块的符号链接:


cd /etc/apache2
rm mods-enabled/mpm_event.conf
rm mods-enabled/mpm_event.load
ln -s mods-available/mpm_prefork.conf mpm_prefork.conf
ln -s mods-available/mpm_prefork.load mpm_prefork.load

然后,重新启动网络服务器:


systemctl restart httpd     [On CentOS 7 box]
systemctl restart apache2   [On Debian 8 box]

如果在 CentOS 7 中启动 Apache 返回一条错误消息,指出找不到 libphp7.so 模块,只需复制到指定路径即可来自/opt/php-7.0.0RC1/.libs/libphp7.so

测试 PHP/Apache 安装的经典方法是使用 phpinfo() 文件。在 Web 服务器的文档根目录(在两个发行版中为 /var/www/html)中创建一个名为 test.php 的文件,其中包含以下内容:


<?php
phpinfo();
?>

并在网络内的客户端中启动浏览器进行测试:


http://localhost/test.php
OR
http://IP-address/test.php

概括

在本文中,我们解释了如何从源代码安装 PHP 7,这是这种流行服务器端脚本语言的最新 RC,旨在以前所未有的价值提高性能。在今年201511月达到稳定状态之前,我们强烈建议您不要在生产环境中使用此版本。

如果您对本文有任何疑问/意见/建议,请随时使用下面的表格告诉我们。