前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编译源码安装PHP 5.4

编译源码安装PHP 5.4

作者头像
用户2131907
发布2019-02-27 13:32:20
4K0
发布2019-02-27 13:32:20
举报

我们使用vagrant建立虚拟环境,这里使用"chef/centos-6.5"这个box,这个box是一个比较纯净的CentOS-6.5系统。

代码语言:javascript
复制
$ vagrant init chef/centos-6.5
$ vagrant up

执行上述命令之后,就已经建立了一个centos-6.5的虚拟机并且启动了,这时我们使用命令ssh连接到虚拟机。

代码语言:javascript
复制
$ vagrant ssh

提示符变成了[vagrant@localhost ~]$ ,说明成功连接到了虚拟机。接下来,我们就可以开始PHP开发环境的安装配置了。

如果不使用vagrant,可以自己安装一个CentOS系统或者是虚拟机,以下步骤与vagrant没有直接关系。

编译源码安装PHP

首先,下载PHP安装文件,我们使用源码编译安装 PHP 5.4.35,到PHP官网下载PHP安装文件。

代码语言:javascript
复制
$ wget http://jp1.php.net/distributions/php-5.4.35.tar.gz
$ tar -zxvf php-5.4.35.tar.gz
$ cd php-5.4.35

接下来对PHP源码进行编译安装,进入到源码目录之后,执行下列命令安装:

注意,如果需要mysql的话,最好是在变异的时候就提供参数并且指定为使用mysqlnd库,否则单独编译 扩展的形式安装只能使用MySQL Client Library。

代码语言:javascript
复制
$ ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-gettext --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd

执行上述命令之后,提示如下错误:

代码语言:javascript
复制
configure: error: no acceptable C compiler found in $PATH

这是因为没有安装gcc编译器,我们需要先安装gcc。

代码语言:javascript
复制
$ sudo yum install gcc

安装之后,重新编译,这次出现了新的错误:

代码语言:javascript
复制
configure: error: xml2-config not found. Please check your libxml2 installation.

提示找不到libxml2,没问题,安装一下就行了。

代码语言:javascript
复制
$ sudo yum install libxml2-devel

继续重新编译,编译安装的过程就是不断解决问题的过程,每次遇到问题,我们去解决问题,没有什么是能难道我们的!

代码语言:javascript
复制
configure: error: Cannot find OpenSSL\'s <evp.h>

因为我们启用了--with-openssl,因此,我们需要安装openssl-devel

代码语言:javascript
复制
$ sudo yum install openssl-devel

再次编译,提示

代码语言:javascript
复制
configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-dir>/include/curl/

错误已经说明了,安装一下libcurl

代码语言:javascript
复制
$ sudo yum install libcurl-devel

继续编译,我们还会遇到如下错误

代码语言:javascript
复制
configure: error: jpeglib.h not found.

因为我们的编译参数中提供了对GD库的支持,因此需要安装以下几个库。

代码语言:javascript
复制
$ sudo yum install libjpeg libjpeg-devel
$ sudo yum install libpng libpng-devel
$ sudo yum install freetype freetype-devel

安装了这么多lib,总该成功了吧,再次编译,悲剧的是,又报错了:

代码语言:javascript
复制
configure: error: mcrypt.h not found. Please reinstall libmcrypt.

我们还需要安装libmcrypt,这个lib在yum中是没有的,因此需要下载下来,手动编译。

代码语言:javascript
复制
$ wget ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/libmcrypt/libmcrypt-2.5.7.tar.gz
$ tar -zxvf libmcrypt-2.5.7.tar.gz
$ cd libmcrypt-2.5.7
$ ./configure
$ make
$ sudo make install

好了,我们再编译一次,这次一定要成功了,再不成功就不玩了。。。幸运的是,这次configure成功, 一鼓作气,编译安装:

代码语言:javascript
复制
$ make
$ sudo make install

一切都顺利的话,我们已经成功编译并且安装了PHP,安装目录在/usr/local/php

最后,我们需要提供php的配置文件php.ini

代码语言:javascript
复制
$ sudo cp php.ini-development  /usr/local/php/etc/php.ini
$ sudo mv /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

PHP的安装目录由configure--prefix=目录参数指定。另外,这里我们搭建的是用于开发的环境, 如果需要作为生产环境,则需要注意一些安全性问题,同时,建议不要拷贝php.ini-development文件了, 而是拷贝php.ini-production文件。

查看一下PHP的版本:

代码语言:javascript
复制
$ /usr/local/php/bin/php --version
PHP 5.4.35 (cli) (built: Nov 25 2014 08:23:11)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

为了操作方便,可以将php的bin目录添加到环境变量。编辑~/.bash_profile, 在export PATH上面添加下面一行内容:

代码语言:javascript
复制
PATH=$PATH:/usr/local/php/bin

然后执行如下命令

代码语言:javascript
复制
$ source ~/.bash_profile

这样,我们就可以直接使用命令,而不需要添加目录了。

小技巧:如何查看PHP使用的是哪个配置文件?

代码语言:javascript
复制
$ strace -e open php 2>&1 |grep php.ini
open("/usr/local/php/bin/php.ini", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/local/php/etc/php.ini", O_RDONLY) = 3

如果没有安装strace命令,使用yum install strace 安装即可。

安装扩展

安装完成基本的PHP了,接下来我们需要安装一些符合业务需要的扩展。

安装yaf开发框架扩展

执行以下命令,使用pecl进行安装:

代码语言:javascript
复制
$ sudo /usr/local/php/bin/pecl install yaf

不出意外的话,上述命令足以完成yaf的安装,接下来,需要在php.ini文件中启用yaf扩展。 编辑/usr/local/php/etc/php.ini,加入以下内容

代码语言:javascript
复制
extension=yaf.so

在执行上述命令的时候,可能会出现下列错误:

代码语言:javascript
复制
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

ERROR: phpize failed

这是因为没有安装autoconf导致的,安装以后就可以了

代码语言:javascript
复制
$ sudo yum install m4
$ sudo yum install autoconf

安装mysql和mysqli扩展

安装mysql相关扩展,推荐使用mysqlnd库,但是找了半天,实在是没有找到好的办法单独编译mysql扩展使用 mysqlnd库,最后在文档中看到下面这段内容:

代码语言:javascript
复制
The MySQL database extensions must be configured to use the MySQL Client Library. In order to use the MySQL Native Driver, PHP needs to be built specifying that the MySQL database extensions are compiled with MySQL Native Driver support. This is done through configuration options prior to building the PHP source code.

这里说的是如果安装mysql扩展的话,只能使用MySQL Client Library(百度/谷歌有好多安装教程)。如果希望使用mysqlnd库的话, 只能在编译PHP的时候指定。因此,好像是只能重新编译PHP了。如果你有好的办法,可以交流交流。

安装eAccelerator扩展

代码语言:javascript
复制
$ wget https://github.com/eaccelerator/eaccelerator/archive/master.zip -O eaccelerator.zip
$ sudo yum install unzip
$ unzip eaccelerator.zip
$ cd eaccelerator-master/
$ phpize
$ ./configure --enable-shared
$ make
$ sudo make install

在php.ini中增加eAccelerator的配置信息:

代码语言:javascript
复制
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"

执行php -v可以看到

代码语言:javascript
复制
$ php -v
PHP 5.4.35 (cli) (built: Nov 25 2014 10:40:18)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
    with eAccelerator v1.0-dev, Copyright (c) 2004-2012 eAccelerator, by eAccelerator

安装Xdebug扩展

代码语言:javascript
复制
$ wget http://github.com/xdebug/xdebug/archive/master.zip -O xdebug.zip
$ unzip xdebug.zip
$ cd xdebug-master
$ /usr/local/php/bin/phpize
$ ./configure --enable-xdebug
$ make
$ sudo make install

接下来配置php.ini,加入该扩展

代码语言:javascript
复制
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_connect_back=1
;xdebug.remote_autostart=1

安装OpCache扩展

因为eAccelerator已经没人维护好长时间了,所以,可以考虑使用OpCache。

代码语言:javascript
复制
$ wget http://pecl.php.net/get/zendopcache-7.0.3.tgz
$ tar -zxvf zendopcache-7.0.3.tgz
$ cd zendopcache-7.0.3
$ phpize
$ make
$ sudo make install

接下来需要配置php.ini,启用该扩展。

注意:如果与XDebug一起使用的话,需要确保OpCache在Xdebug之前加载。

代码语言:javascript
复制
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/opcache.so"
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

查看是否安装成功

代码语言:javascript
复制
$ php -v
PHP 5.4.35 (cli) (built: Nov 25 2014 10:40:18)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
    with Xdebug v2.3.0dev, Copyright (c) 2002-2014, by Derick Rethans

安装Xhprof扩展

代码语言:javascript
复制
$ wget http://pecl.php.net/get/xhprof-0.9.4.tgz
$ tar -zxvf xhprof-0.9.4.tgz
$ cd xhprof-0.9.4
$ cd extension/
$ phpize
$ ./configure
$ make
$ sudo make install

修改php.ini

代码语言:javascript
复制
[xhprof]
extension=xhprof.so
xhprof.output_dir=/tmp/xhprof

使用图形展示遇到的错误:

代码语言:javascript
复制
failed to execute cmd: " dot -Tpng". stderr: `sh: dot: command not found '

解决办法:

代码语言:javascript
复制
$ sudo yum install graphviz
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编译源码安装PHP
  • 安装扩展
    • 安装yaf开发框架扩展
      • 安装mysql和mysqli扩展
        • 安装eAccelerator扩展
          • 安装Xdebug扩展
            • 安装OpCache扩展
              • 安装Xhprof扩展
              相关产品与服务
              云数据库 SQL Server
              腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档