lamp升级php至php7

广告位招租
扫码页面底部二维码联系

周末看了一下php7的一些情况,被其强大【本文受版权保护】本文作者:唐霜,转载请注明出处。的性能吸引住,准备亲手升级一下php,让著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net网站能够在php7下面跑起来,需要将服务本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。器上的php升级到php7.0.0。

转载请注明出处:www.tangshua【本文受版权保护】原创内容,盗版必究。ng.net著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshu未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。ang.net

首先,简单的梳理一下,升级php实际上是【原创内容,转载请注明出处】【转载请注明来源】对linux上的一个软件(类似编译器)的【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net升级。但是和windows不同,linu未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】x上的编译安装不会覆盖原来的软件安装,除本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。非完全覆盖原来的文件(覆盖原来的文件可能【本文首发于唐霜的博客】未经授权,禁止复制转载。导致兼容性问题,其他软件在调用该软件时,未经授权,禁止复制转载。【未经授权禁止转载】可能不支持新版本的功能,新版本也可能不提著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net供老版本的接口)。因此,在linux,我【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net们可以并行运行多个版本的软件,我们同时在【作者:唐霜】【关注微信公众号:wwwtangshuangnet】服务器上保存php5.6和运行php7.【原创内容,转载请注明出处】本文作者:唐霜,转载请注明出处。0。

转载请注明出处:www.tangshua【本文受版权保护】【关注微信公众号:wwwtangshuangnet】ng.net原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshu著作权归作者所有,禁止商业用途转载。【原创内容,转载请注明出处】ang.net

其次,我们写的php程序要运行,只需要用原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】php软件去执行源代码即可。但是apac【本文首发于唐霜的博客】【原创不易,请尊重版权】he要执行我们写的php,就必须调用一个未经授权,禁止复制转载。【版权所有,侵权必究】模块来启用php软件执行。因此,我们升级【未经授权禁止转载】本文作者:唐霜,转载请注明出处。php之后,也需要一个apache模块来【访问 www.tangshuang.net 获取更多精彩内容】【本文受版权保护】让apache可以调用php7.0执行p【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】hp程序。庆幸的是,在编译php7的时候【未经授权禁止转载】转载请注明出处:www.tangshuang.net,可以通过配置参数自动生成apache的【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。libphp7.so,我们只需要修改ap本文作者:唐霜,转载请注明出处。【本文受版权保护】ache的配置文件,就可以让apache著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。从原来的调用php5切换到php7。

著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。

接下来,我们来安装php7。为方便演示,【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。用root用户登陆到服务器。

【本文受版权保护】【原创内容,转载请注明出处】本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。

下载解压

【未经授权禁止转载】【未经授权禁止转载】【本文受版权保护】

php官方下载页面,随便选择一个你的服务器所在国家的镜像,著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net鼠标右键复制链接。

【关注微信公众号:wwwtangshua本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】ngnet】【本文受版权保护】原创内容,盗版必究。
$ wget http://am1.php.net/get/php-7.0.0.tar.gz/from/this/mirror

解压下载到的压缩包

原创内容,盗版必究。【本文首发于唐霜的博客】
$ tar xf php-7.0.0.tar.gz$cd php-7.0.0

安装前配置

【本文受版权保护】【作者:唐霜】【作者:唐霜】

解决依赖包

【本文首发于唐霜的博客】【版权所有,侵权必究】【版权所有】唐霜 www.tangshu【原创内容,转载请注明出处】【本文首发于唐霜的博客】ang.net【作者:唐霜】
yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel

利用linux的make安装方式,我们需本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。要在make之前对软件的编译进行配置。这【版权所有】唐霜 www.tangshuang.net【作者:唐霜】里需要留意,如果编译之前没有配置对应的选【访问 www.tangshuang.net 获取更多精彩内容】【关注微信公众号:wwwtangshuangnet】项,会导致不生成某些模块,后面可能会遇到本文版权归作者所有,未经授权不得转载。【原创内容,转载请注明出处】问题。

【关注微信公众号:wwwtangshua【关注微信公众号:wwwtangshuangnet】【本文首发于唐霜的博客】ngnet】【原创不易,请尊重版权】【本文受版权保护】原创内容,盗版必究。
./configure --prefix=/usr/local/php7 \--with-config-file-path=/usr/local/php7/etc \--with-config-file-scan-dir=/usr/local/php7/etc/php.d \--with-apxs2=/usr/local/apache/bin/apxs \--with-mcrypt=/usr/include \--enable-mysqlnd \--with-mysqli \--with-pdo-mysql \--with-gd \--with-iconv \--with-zlib \--enable-xml \--enable-shmop \--enable-sysvsem \--enable-inline-optimization \--enable-mbregex \--enable-mbstring \--enable-ftp \--enable-gd-native-ttf \--with-openssl \--enable-pcntl \--enable-sockets \--with-xmlrpc \--enable-zip \--enable-soap \--without-pear \--with-gettext \--enable-session \--with-curl \--with-jpeg-dir \--with-freetype-dir \--enable-opcache

上面的这段配置,蓝色选项根据你的服务器部转载请注明出处:www.tangshuang.net【版权所有,侵权必究】署,修改成为你自己的实际路径。

著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.n本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.netet 获取更多精彩内容】

编译安装

未经授权,禁止复制转载。【本文受版权保护】

原本在linux中,在configure【本文受版权保护】本文版权归作者所有,未经授权不得转载。之后,只需要make就可以进行编译了,但【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。是由于不同的环境,会出现不同的错误,比如转载请注明出处:www.tangshuang.net【版权所有,侵权必究】我的服务器上,出现了提示libiconv【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net错误,我在往上还看到libmcrypt错误。所以,在编译的时候,我们可能需要根著作权归作者所有,禁止商业用途转载。【未经授权禁止转载】据编译中出现的情况,安装对应的一些模块或【作者:唐霜】原创内容,盗版必究。软件环境。如果编译错误后无法继续编译,可本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】以使用make clean再来编译。

【版权所有】唐霜 www.tangshu【版权所有,侵权必究】【关注微信公众号:wwwtangshuangnet】ang.net【未经授权禁止转载】【原创内容,转载请注明出处】【版权所有】唐霜 www.tangshu【关注微信公众号:wwwtangshuangnet】【版权所有】唐霜 www.tangshuang.netang.net

我再编译的时候,出现了libiconv错【作者:唐霜】【原创不易,请尊重版权】误,同时,我们的服务器是双核的,所以,我【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net用了下面的命令进行编译:

【访问 www.tangshuang.n【原创不易,请尊重版权】未经授权,禁止复制转载。et 获取更多精彩内容】【未经授权禁止转载】
$ gmake -j2 ZEND_EXTRA_LIBS='-liconv'

-j2表示用双核cup去编译,编译速度更著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。快。总之,编译中出现了什么错误,就到网上转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net去查怎么解决。

【版权所有】唐霜 www.tangshu【版权所有,侵权必究】【原创不易,请尊重版权】ang.net【版权所有】唐霜 www.tangshu转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.netang.net【本文首发于唐霜的博客】【原创不易,请尊重版权】

完成编译之后,进行安装即可。

原创内容,盗版必究。【关注微信公众号:wwwtangshua【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。ngnet】
$ make install

配置apache

本文作者:唐霜,转载请注明出处。【作者:唐霜】

如果上面的编译安装正常,由于我们配置了a未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。pxs选项,所以在编译的时候,make会【作者:唐霜】原创内容,盗版必究。对apache的apxs进行调用操作,结【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。果就是在apache的安装目录下的mod本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】ules目录下生成libphp7.so,【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net并在apache的配置文件httpd.c原创内容,盗版必究。【原创不易,请尊重版权】onf中增加一行

【转载请注明来源】本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshua未经授权,禁止复制转载。转载请注明出处:www.tangshuang.netngnet】
LoadModule php7_module        modules/libphp7.so

一看就明白了,就是让apache去加载一转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】个新的libphp7.so模块。但是我们【原创不易,请尊重版权】【本文受版权保护】仍然要对httpd.conf进行修改,重本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。新配置apache。找到LoadModu【关注微信公众号:wwwtangshuangnet】【本文首发于唐霜的博客】le php,你会发现,竟然出现了两行L本文版权归作者所有,未经授权不得转载。著作权归作者所有,禁止商业用途转载。oadModule,同时加载了php5和【版权所有】唐霜 www.tangshuang.net【本文受版权保护】php7,如下:

本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshua【本文首发于唐霜的博客】【原创不易,请尊重版权】ng.net未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。
LoadModule php5_module        modules/libphp5.soLoadModule php7_module        modules/libphp7.so

我们把第一行给注释掉,而且还要增加一个P本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。HPIniDir的配置项,即修改为如下:

本文作者:唐霜,转载请注明出处。本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshua【访问 www.tangshuang.net 获取更多精彩内容】本文作者:唐霜,转载请注明出处。ng.net
#LoadModule php5_module        modules/libphp5.soLoadModule php7_module        modules/libphp7.soPHPIniDir   /usr/local/php7/etc

重启apache,现在可以写一个phpi【本文受版权保护】【原创不易,请尊重版权】nfo去试试看了。

未经授权,禁止复制转载。【本文受版权保护】【本文受版权保护】

php的配置文件

【本文受版权保护】转载请注明出处:www.tangshua本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.netng.net

在php默认安装状态下你可能发现  /u著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.netsr/local/php7下没有etc目本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.net录,也就没有php.ini文件。这是正常【原创内容,转载请注明出处】【转载请注明来源】的,不过你可以自己创建php.ini,也【未经授权禁止转载】【关注微信公众号:wwwtangshuangnet】可以从php源码目录中找到两个php.i本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。ni-xxx文件,拷贝一个过去,改名为p【原创不易,请尊重版权】原创内容,盗版必究。hp.ini即可。

原创内容,盗版必究。本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】
cd ~/php-7.0.0mkdir /usr/local/php7/etccp php.ini-production /usr/local/php7/etc/php.ini

如果你的服务器上面还安装了mysql,其【版权所有】唐霜 www.tangshuang.net著作权归作者所有,禁止商业用途转载。实不用再做其他配置,我们在configu【作者:唐霜】【访问 www.tangshuang.net 获取更多精彩内容】re的时候,让php7也支持mysql,转载请注明出处:www.tangshuang.net【原创内容,转载请注明出处】如果你原来的lamp环境中已经可以正常连【访问 www.tangshuang.net 获取更多精彩内容】未经授权,禁止复制转载。接mysql了,那么现在php7其实也可【原创不易,请尊重版权】【原创不易,请尊重版权】以正常连接mysql,mysql不需要做著作权归作者所有,禁止商业用途转载。本文版权归作者所有,未经授权不得转载。任何配置修改。

【访问 www.tangshuang.n原创内容,盗版必究。本文作者:唐霜,转载请注明出处。et 获取更多精彩内容】转载请注明出处:www.tangshua本文版权归作者所有,未经授权不得转载。【访问 www.tangshuang.net 获取更多精彩内容】ng.net【版权所有,侵权必究】【转载请注明来源】

2015-12-07 24233

为价值买单,打赏一杯咖啡

本文价值242.33RMB
已有15条评论
  1. 维维 2019-07-15 17:50

    您好,我现在有这样一个问题,按照您的讲解,我的配置文件也做了修改,但是重新启动 apache 以后 ,为什么 PHP是的版本还是我之前安装的呢?

    PHP Version 5.6.31

    • 否子戈 2019-07-15 17:54

      重启服务

      • 维维 2019-07-15 17:57

        重新启动了,我用的是阿里的 “轻量应用服务器的 LAMP 镜像” 和这个有关系吗?

        • 否子戈 2019-07-15 18:03

          没关系,应该是有什么地方没弄对,你再琢磨琢磨

  2. 张生 2019-07-14 18:29

    博主,你好!

    大致看了下您的文章,很多一知半解。现在wordpress和很多主题都不支持php7以下的版本了,所以我想升级下php,但是我的环境是lamp1.3。之前直接升级lamp1.3-lamp1.6,然后将网站文件和数据库文件复制过去,试验了10次左右都打不开网站(显示服务器拒绝访问),lnmp restart 是正常的,.hatcess文件也在,其它网站倒是没问题(1.5-1.6)。不知道是不是wordpress插件的问题。另外,这个教程可以直接用来升级lamp1.3的php吗?有什么需要注意的吗?谢谢
    可以加下您的qq吗?帮我解决了网站问题,可以给您点少辛苦费。

    • 否子戈 2019-07-14 20:41

      你好,谢谢你的关注。
      你的问题比较复杂,首先你在你的网站根目录下,放一个和wordpress没有关系的php,看下是不是可以正常输出内容,如果可以正常输出,那应该和lamp本身没有关系。
      接下来,php版本升级之后,有些api不兼容了,你要检查一下你现在使用的主题和插件是不是有不符合新语法的东西。你要先删掉一些插件(记得备份)和主题,看看是不是某个插件引起的。如果是,就不要再用了,反馈给作者,让他升级。
      如果还解决不了,可以扫我博客底部的二维码加我微信。

  3. […] 在《lamp升级php至php7》一文中,我谈到了如何在apache的服务器环境中升级php到7,而到nginx环境下,我们不再使用php的apxs模块,而是直接使用php-fpm模块。接下来,我们来尝试编译安装php7。 […]

  4. xiaocing 2017-02-05 03:13

    請教一下,我php7應該是升級成功(php -v 是顯示7.0)但是我打開phpmyadmin首頁𥚃php版本是顥示舊版5.538!這該如何?謝謝

    • 否子戈 2017-02-06 17:19

      升级php7成功并不代表你的Apache在用php7为你的程序提供服务,你得重新配置一下你的httpd,让httpd用php7来执行php程序。\nLoadModule php7_module modules/libphp7.so\n还有问题的话再留言。

  5. […] 在《lamp升级php至php7》一文中,我谈到了如何在apache的服务器环境中升级php到7,而到nginx环境下,我们不再使用php的apxs模块,而是直接使用php-fpm模块。接下来,我们来尝试编译安装php7。 […]

  6. 蓝天 2016-09-08 13:57

    老师你好,向您请教些问题:\n小弟linux比较菜。不会make 编译安装php7 用的 sudo apt-get install php  (mint 18)\n装完后在终端 php -v 可以运行。\n但是都不知道php7 装哪里了。\n用sudo find /etc -name “*php*”  命令发现\n etc/php/7.0 下面\n看到 /etc/rc4.d/s01php7.0 -fpm 这样的不知道什么\n还有/etc/alternatives/php  不知道什么\n/etc/cron.d/php  不知道什么\n\n其实我是想找他的配置文件。和扩展。 都没看到 php 的 ext 在哪\n更别说去执行phpize了。\n麻烦老师多写点教程分享下。百度的文章不多啊。

    • 否子戈 2016-09-12 09:25

      我可不是什么老师,随便称呼别人老师感觉不好\n你通过apt安装的软件,通过whereis php就可以看到相关路径

  7. Paddington 2016-05-08 12:24

    你好,我现在有这样一个问题,服务器是Ubuntu,之前是lamp,其中有比较陈旧的5的一些项目在运行,而且暂时还不能将他们撤销(或升级)。所以,我想的是让php5和php7共同运行,即新部署(开发)的项目用php7,之前的那些老项目继续用php5。这样的话,我需要怎么做才能实现呢?希望您有空帮忙回答下,非常感谢。

    • frustigor 2016-05-08 22:25

      没有实践过多个PHP版本共存的情况,但是从理论上讲应该是可以的。PHP本身也就是一个执行程序,不同的版本可以共存于Linux系统,而主要要解决的是,当你访问网站时,如何让Apache去选择调用哪一个版本的PHP。我网上搜了一下,使用FastCGI可以实现这一目的,让不同的PHP版本占用不同的端口,在访问网站时,Apache将动态脚本处理交由FastCGI去选择,由FastCGI选择具体哪一个版本的PHP来执行脚本,执行完毕后,Apache直接返回结果。

  8. […] 在《 lamp升级php至php7 》一文中,我谈到了如何在apache的服务器环境中升级php到7,而到nginx环境下,我们不再使用php的apxs模块,而是直接使用php-fpm模块。接下来,我们来尝试编译安装php7。 […]