PHP是一种为我们熟知的通用服务器网页脚本语言。非常多的在线网站都是用PHP编写的。PHP这些年来一直在持续进化,丰富其功能,变得易于使用,更好地组织的脚本语言。目前PHP的开发团队正筹备下一个PHP版本的发行,名字是PHP 7。现在的PHP版本为PHP 5.6,可能你清楚PHP 6已经流产了,PHP 7的支持者们不希望下一个重要的版本被其他分支混淆,即过去已经停止很久的PHP 6。所以决定下一个PHP主要的发行版本叫PHP 7,而不是PHP 6。PHP 7.0预计在今年十一月份发行。

在下一代主要PHP版本里有一些不错的功能:

  • 为了改善执行效率与内存占用,新的版本添加了PHPNG功能。
  • 引入了JIT引擎来动态编译Zend操作码为自然机器码,以此来达到更快的处理性能。这项功能允许随后的程序调用同一份代码,这样会运行快很多。
  • AST(抽象语法树)是最新添加的功能,它可以增强支持PHP的扩展性和用户应用。
  • 添加异步编程功能以支持同一个请求中的并行任务。
  • 新的版本会支持独立的多线程网页服务器,这样可以使用一个单独的存储池处理很多并发的请求。

在CentOS/Fedora上安装PHP 7

让我们来看看怎样在CentOS 7和Fedora 21安装PHP7。为了安装PHP7,我们首先需要克隆PHP-src 仓库。当克隆工作完成,我们再配置和编译它。进行下一步之前,我们要确保已经在LInux系统下安装了如下的组件,否则PHP编译会返回错误中止。

  • Git
  • autoconf
  • gcc
  • bison

所有上面提到的要求可以使用Yum软件包管理器安装。以下一条命令即可完成:

 
 
  1. yum install git autoconf gcc bison

准备好开始安装PHP7了吗?让我们先创建一个PHP7目录,作为你的当前工作目录。

mkdir PHP7 
  
  • cd PHP7
  • 现在克隆PHP-src仓库,在终端里运行下面的命令。

    git clone https://git.PHP.net/repository/PHP-src.git 
      
     

    工作应该会在几分钟后完成,这里是一个样例输出,你应该会在任务完成时看见。

    [root@localhost PHP7]# //git.PHP.net/repository/PHP-src.git 
      
  • cloning into 'PHP-src'...
  • remote: Counting objects: 615064, done.
  • Compressing objects: 100% (127800/127800),100);">done.
  • Total 615064 (delta 492063), reused 608718 (delta 485944)
  • Receiving objects: 615064/615064), 152.32 MiB | 16.97 MiB/s,100);">done.
  • Resolving deltas: 492063/done.
  • 让我们来配置,编译PHP7,在终端运行下面的命令,开始配置工作:

    cd PHP-src 
      
  • ./buildconf
  • 下面是./buildconf命令的样例输出。

    [root@localhost PHP-src]# ./buildconf 
      
  • buildconf: checking installation...
  • buildconf: autoconf version 2.69 (ok)
  • rebuilding aclocal.m4
  • rebuilding configure
  • rebuilding main/PHP_config.h.in
  • 使用下面的命令,继续配置进程:

    ./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 \
  • with-t1lib=/usr \
  • --enable-gd-native-ttf \
  • --enable-gd-jis-conv \
  • with-openssl \
  • with-MysqL=/usr \
  • with-pdo-MysqL=/usr \
  • with-gettext=/usr \
  • with-zlib=/usr \
  • with-bz2=/usr \
  • with-recode=/usr \
  • with-MysqLi=/usr/bin/MysqL_config
  • 这会花去不少的时间,当完成后你应该会看到如下面的输出:

    creating libtool 
      
  • appending configuration tag "CXX" to libtool
  • Generating files
  • configure: creating ./config.status
  • creating main/internal_functions.c
  • creating main/internal_functions_cli.c
  • +--------------------------------------------------------------------+
  • | License: |
  • This software is subject to the PHP License, available in this |
  • | distribution in the file LICENSE. By continuing this installation |
  • | process, you are bound by the terms of this license agreement. |
  • If you do not agree with the terms of this license, you must abort |
  • | the installation process at this point. |
  • +--------------------------------------------------------------------+
  • Thank you for using PHP.
  • config.status: creating PHP7.spec
  • config.status: creating main/build-defs.h
  • config.status: creating scripts/PHPize
  • config.status: creating scripts/man1/PHPize.1
  • config.status: creating scripts/PHP-config
  • config.status: creating scripts/man1/PHP-config.1
  • config.status: creating sapi/cli/PHP.1
  • config.status: creating sapi/cgi/PHP-cgi.1
  • config.status: creating ext/phar/phar.1
  • config.status: creating ext/phar/phar.phar.1
  • config.status: creating main/PHP_config.h
  • config.status: executing default commands
  • 运行下面的命令,完成编译过程。

    make 
      
     

    “make”命令的样例输出如下所示:

    Generating phar.PHP 
      
  • Generating phar.phar
  • PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
  • clicommand.inc
  • directorytreeiterator.inc
  • directorygraphiterator.inc
  • pharcommand.inc
  • invertedregexiterator.inc
  • phar.inc
  • Build complete.
  • Don't forget to run 'make test'.
  • 活儿干完了,该安装PHP7了,运行下面的命令安装它。

    make install 
      
     

    成功安装的进程的样例输出应该像这样:

    [root@localhost PHP-src]# make install 
      
  • Installing shared extensions: /root/PHP7/usr/lib/PHP/extensions/no-debug-non-zts-20141001/
  • Installing PHP CLI binary: /root/PHP7/usr/bin/
  • Installing PHP CLI man page: /root/PHP7/usr/PHP/man/man1/
  • Installing PHP CGI binary: /root/PHP7/usr/bin/
  • Installing PHP CGI man/man1/
  • Installing build environment: /root/PHP7/usr/lib/PHP/build/
  • Installing header files: /root/PHP7/usr/include/PHP/
  • Installing helper programs: /root/PHP7/usr/bin/
  • program: PHPize
  • program: PHP-config
  • Installing man pages: man/man1/
  • page: PHPize.page: PHP-config.Installing PEAR environment: /root/PHP7/usr/lib/PHP/
  • [PEAR] Archive_Tar - installed: 1.3.13
  • Console_Getopt - installed: Structures_Graph- installed: 1.0.4
  • [PEAR] XML_Util - installed: 1.2.3
  • [PEAR] PEAR - installed: 1.9.5
  • Wrote PEAR system config file at: /root/PHP7/usr/etc/pear.conf
  • You may want to add: /root/PHP7/usr/lib/PHP to your PHP.ini include_path
  • /root/PHP7/PHP-src/build/shtool install -c ext/phar/phar.phar /root/PHP7/usr/bin
  • ln -s -f /root/PHP7/usr/bin/phar.phar /root/PHP7/usr/bin/phar
  • Installing PDO headers: include/PHP/ext/pdo/
  • 恭喜你,PHP7已经安装在你的Linux系统上了。安装完后,进入PHP7安装文件里的sapi/cli里面。

    cd sapi/cli 
      
     

    验证一下PHP的版本。

    [root@localhost cli]# ./PHP -v 
      
  • PHP 7.0.0-dev (cli) (built: Mar 28 2015 00:54:11)
  • copyright (c) 1997-2015 The PHP Group
  • Zend Engine v3.0.0-dev, 1998-Technologies
  • 在 CentOS 7.x / Fedora 21 上面体验 PHP 7.0的更多相关文章

    1. ios – 如何使用Objective C类中的多个参数调用Swift函数?

      本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

    2. ios – Swift 4添加手势:覆盖vs @objc

      我想在我的视图中添加一个手势,如下所示:但是,在Swift4中,我的编译器给出了以下错误:建议添加@objc以将此实例方法公开给Objective-C.实现此目的的另一个选项将覆盖touchesBegan()函数并使用它来处理点击.我试图以“Swift”的方式做到这一点,而不必带入Obj-C.有没有纯粹的Swift方式来添加这个轻击手势而不使用@objc?

    3. ios – 将视频分享到Facebook

      我正在编写一个简单的测试应用程序,用于将视频从iOS上传到Facebook.由于FacebookSDK的所有文档都在Objective-C中,因此我发现很难在线找到有关如何使用Swift执行此操作的示例/教程.到目前为止我有这个在我的UI上放置一个共享按钮,但它看起来已禁用,从我读到的这是因为没有内容设置,但我看不出这是怎么可能的.我的getVideoURL()函数返回一个NSURL,它肯定包含视

    4. ios – 以编程方式在Swift中添加联系人

      我想在Swift中以编程方式添加联系人.我发现了一些Objective-C示例,但我没有让它们工作,甚至在Objective-C中也没有.我不希望这涉及到AddressBookUI,因为我想从我自己的UI中获取值.解决方法这是在Swift中添加联系人的快速方法.我在我的iPhone5iOS7.1上验证了它,因为我发现模拟器并不总是与我的手机对AB的东西相同.您可以添加一个按钮并指向此方法:顺便说一下–它假设你已经分配了一个地址簿var,你可以通过覆盖viewDidAppear来打开视图.它也会执行安全提示

    5. ios – 为目标c中的方法传递未知类型的参数,可能吗?

      是否可以将未知类型的参数传递给objective-C方法?在C#中你可以写实现这一点,但我知道Objective-C没有泛型,所以有没有其他方法可以在Objective-C中实现这一点?我需要这个,因为我想创建一个方法来改变不同对象的文本颜色,如UITextField和UIButton的占位符文本.所以我的计划是创建一个名为textWhite的方法,然后在此方法中检查对象的类型,然后运行匹配的代码以使文本颜色变为白色.解决方法是的,可以传递未知类型的参数.见下面的例子.请参考使用id对象的链接作为参数Us

    6. ios – Swift指针算术和解除引用;将一些类似C的地图代码转换为Swift

      我有一点似乎没有工作的Swift代码……解决方法您正在指定locationPointer指向新位置,但仍在下一行中使用ptr,并且ptr的值尚未更改.将您的最后一行更改为:或者你可以改变指向var的指针并推进它:

    7. ios – “禁用模块时使用’@import’”错误 – 启用模块和链接框架= YES

      我有一个使用CocoaPods并使用’SCLAlertView-Objective-C’窗格的项目.该pod使用@importUIKit;模块样式导入.我在目标和项目设置中将“启用模块(C&Objective-C)”和“自动链接框架”设置为YES.当模块被禁用时,我仍然得到“使用’@import’错误.有没有什么可以阻止Xcode能够启用模块,如使用.pch文件,任何链接器标志,或者我没有提到的任

    8. XCode 6.3立即在抛出的Objective-C异常上引发SIGABRT

      考虑以下目标-C代码在XCode6.2中,它按预期工作(记录“错误消息”).但是,由于我们升级到6.3,抛出行(throwstd::logic_error…)引发SIGABRT(堆栈跟踪仅包含_cxa_throw和_pthread_kill,超出applicationdidFinishLaunchingWithOptions)并导致应用程序崩溃.这只发生在我们的应用程序中–当我将完全相同的代码复制

    9. ios – 在swift框架中使用Bridging Headers时失败

      我正在做一个快速的框架,我想使用旧的目标c类.为此,我使用桥接头方法但是当我尝试构建时出现此错误:我将我的{PROJECT}-Bridging-Header.h添加到Swift编译器中的Objective-C桥接头–代码生成我怎么解决它?

    10. XCode 3.2 Ruby和Python模板

      在xcode3.2下,我的ObjectiveCPython/Ruby项目仍然可以打开更新和编译,但是你无法创建新项目.鉴于xcode3.2中缺少ruby和python的所有痕迹(即创建项目并添加新的ruby/python文件),是否有一种简单的方法可以再次安装模板?我发现了一些关于将它们复制到某个文件夹的信息,但我似乎无法让它工作,我怀疑文件夹的位置已经改变为3.2.解决方法3.2中的应用程序模板

    随机推荐

    1. 在airgapped(离线)CentOS 6系统上安装yum软件包

      我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

    2. centos – 命名在日志旋转后停止记录到rsyslog

      CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

    3. centos – 显示错误的磁盘大小

      对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

    4. 如何在centos 6.9上安装docker-ce 17?

      我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

    5. centos – 闲置工作站的异常负载平均值

      我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

    6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

      我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

    7. centos – 大量ssh登录尝试

      22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

    8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

      >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

    9. centos – Azure将VM从A2 / 3调整为DS2 v2

      我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

    10. centos – 广泛使用RAM时服务器计算速度减慢

      我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

    返回
    顶部