ubuntu如何编译安装官方php7?

阅读 9.4k
5 个回答

闲着无聊,刚刚编译了下,我写一下过程。

wget http://cn2.php.net/get/php-7.0.9.tar.bz2/from/this/mirror

tar xvf mirror

cd php-7.0.9/

sudo apt-get update

sudo apt-get install libkrb5-dev \
libc-client2007e                 \
libc-client2007e-dev             \
libcurl4-openssl-dev             \
libbz2-dev                       \
libjpeg-dev                      \
libmcrypt-dev                    \
libxslt1-dev                     \
libxslt1.1                       \
libpq-dev                        \
libpng12-dev                     \
libfreetype6-dev                 \
build-essential                  \
git                              \
make

如果下面的./configure爆出缺什么的错误,就在上面命令中加一条 lib<缺的东西名字>-dev(el)

./configure \
--prefix=/opt/php-7.0.9                      \
--with-config-file-path=/opt/php-7.0.9/etc   \
--with-zlib-dir                              \
--with-freetype-dir                          \
--enable-mbstring                            \
--with-libxml-dir=/usr                       \
--enable-soap                                \
--enable-calendar                            \
--with-curl                                  \
--with-mcrypt                                \
--with-zlib                                  \
--with-gd                                    \
--disable-rpath                              \
--enable-inline-optimization                 \
--with-bz2                                   \
--with-zlib                                  \
--enable-sockets                             \
--enable-sysvsem                             \
--enable-sysvshm                             \
--enable-pcntl                               \
--enable-mbregex                             \
--enable-exif                                \
--enable-bcmath                              \
--with-mhash                                 \
--enable-zip                                 \
--with-pcre-regex                            \
--with-pdo-mysql                             \
--with-mysqli                                \
--with-mysql-sock=/var/run/mysqld/mysqld.sock \
--with-jpeg-dir=/usr                         \
--with-png-dir=/usr                          \
--enable-gd-native-ttf                       \
--with-openssl                               \
--with-fpm-user=www-data                     \
--with-fpm-group=www-data                    \
--enable-ftp                                 \
--with-imap                                  \
--with-imap-ssl                              \
--with-kerberos                              \
--with-gettext                               \
--with-xmlrpc                                \
--with-xsl                                   \
--enable-opcache                             \
--enable-fpm

然后我们开始编译,注意编译机器的内存必须要大,我虚拟机最开始1G还不够,调到了4G

make  #或者根据你当前正在编译机器cpu核数调参数加速编译,比如我虚拟机是2核 make -j2 就可以同时跑2个job加速编译,编译了差不多15分钟

然后安装

sudo make install

把php7装到上面prefix指定目录,也就是/opt/php-7.0.9/下

跑下cli看看版本号与信息:

/opt/php-7.0.9/bin/php -v
/opt/php-7.0.9/bin/php -i

运行php-fpm服务前,需要把相关的配置文件放好:

sudo mv /opt/php-7.0.9/etc/php-fpm.conf.default /opt/php-7.0.9/etc/php-fpm.conf
sudo mv /opt/php-7.0.9/etc/php-fpm.d/www.conf.default /opt/php-7.0.9/etc/php-fpm.d/www.conf
sudo cp ./php.ini-production /opt/php-7.0.9/etc/php.ini

修改fpm监听的端口:

sudo vi /opt/php-7.0.9/etc/php-fpm.d/www.conf
>;listen = 127.0.0.1:9000
>listen = /var/run/php7.0.9-fpm.sock

然后启动服务 sudo /opt/php-7.0.9/sbin/php-fpm

最后在nginx配置里用

fastcgi_pass   unix:/var/run/php7.0.9-fpm.sock;

就可以了。

如果你用16.04 LTS,就自带PHP7软件包

这个在网上搜Linux编译PHP都会有很多结果吧,./configure --help就能得到一个参数列表。
PHP测试版出来的时候我编译过好几次了,有些扩展,比如curl,gd,iconv,json,mbstring,mysqlnd,pdo这些是必装的,不然很多程序会出问题。

还是自己编译好,我是深受apt-get的害,特么软件包老的要死,报洞的时候很久都没修

学习了,编译过程中 make test && make install 过不去。
出现错误

> /usr/local/pkgsrc/lang/php56/work/php-5.6.12/ext/fileinfo/libmagic/apprentice.c
 > -o ext/fileinfo/libmagic/apprentice.lo
 > gcc: Internal error: Killed (program cc1 received signal 9)
 > Please submit a full bug report.
 > See  for instructions.
 > Makefile:491: recipe for target 'ext/fileinfo/libmagic/apprentice.lo' failed
 > gmake: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1
 > *** Error code 2
 

最后查了下,才发现是内存不够了,百度ubuntu 加swap ,解决问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏