将PHP从版本5.3升级到5.4.7

快点这么说吧,我已经注意到了这个话题,我已经search,有很多解决scheme。 然而,这些解决scheme不适用于我,不仅如此,而且我打算更多地了解基于Debian的操作系统。

问题

  1. 我想知道如何将PHP 5.3升级到PHP 5.4.7,无需使用第三方PPA就可以从源代码自行编译它。
  2. 方式(下面解释)是正确的configurationPHP 5.4的方式吗? 我是从源代码编译的新手。

build立

我运行Ubuntu Server 12.04 64位。 我目前得到:

  • PHP 5.3
  • 的MySQL服务器
  • 的Apache2
  • Memcached的

问题

我最初使用apt-get来安装PHP 5.3。 我现在希望升级到PHP 5.4,因为OOP中的特性和数组结构以及所有其他最近的补丁等等。

可能的解决scheme

我已经看到这个ondrej / ppa版本库,我拒绝使用它,因为它可能工作,但它是一个未知/不可信任的来源。 此外,我不学习如何从源代码pipe理,使用configuration制作和相应的安装

我已经看到了一个从源代码编译的解决scheme,这本质上是我希望通过一些指导来进行的

结论

我不只是指望用勺子喂,我出去做了一些手工阅读,至less开始自己滚动; 这是我有多远。

我做的第一件事就是su根(为了节省键入sudo所有的时间)。

 $ sudo su 

接下来我做的是下载最新版本的PHP(5.4.7),并在安装之前提取其内容准备configuration。

 $ mkdir php5-new && cd !$ $ wget -O php-5.4.7.tar.bz2 http://php.net/get/php-5.4.7.tar.bz2/from/uk3.php.net/mirror $ bzip2 -d php-5.4.7.tar.bz2 $ tar xvf php-5.4.7.tar.gz $ cd php-5.4.7 $ ./configure --help 

最后,我决定做一个bash,我查看了选项列表,并决定列出所有包含在configuration中的东西。

 $ ./configure --with-mysql --with-apache2 --with-libxml --with-openssl --with-zlib --with-bz2 --with-curl --with-dom --with-gd --with-imap --with-imap-ssl --with-mcrypt --with-mysqli --with-pdo-mysql --with-libxml --enable-ftp --enable-mbstring --enable-soap 

最后,结果…

当configuration过程完成时,它会抛出一个错误:

configuration:错误:找不到xml2-config。 请检查您的libxml2安装。


进度更新(解决scheme)

被接受的答案原来是解决scheme。 对于将来可能碰到这个问题的任何人,我会添加一些额外的提示(扩展“Ladadadada”下面所述)。

我遇到了OpenSSL的另一个问题,所以我不得不安装开发库。 我做了这个使用:

 $ apt-cache search openssl | grep dev $ apt-get install libssl-dev $ dpkg -L openssl 

然后,我设置了--with-openssl=/usr/includes/openssl ,它呻吟了一下evp.h。 我试图使用find / -type f -name evp.h来查找这个文件,并在/usr/includes/openssl/evp.h目录中发现它,所以我再次删除=/usr/includes/openssl

您可能需要通过apt-get install libxml2-dev ,然后重试。 这将安装该库的所有头文件和其他开发工具。 对于其他模块来说这也是很有必要的。

这是从二进制软件包安装,而不是使用这些不必要的软件包混乱你的生产系统是一个更好的主意的原因之一。 另外,要学习如何编译自己的二进制文件,您不应该使用生产系统。

您似乎在configuration行中有两次--with-libxml 。 可能无所谓,但最好删除多余的一个。

除此之外,你是否已经安装了libxml2? 你会需要的。 如果你确实安装了,它在哪里? 如果它不在/usr/lib/ (比如在/opt/下),那么你需要使用--with-libxml=/path/to/libxml2指定path。

在尝试编译自己的版本之前,使用apt-get purge完全删除旧版本的PHP是非常重要的。 如果不这样做,通常最终会在两个不同的path和一些难以debugging的问题下,在系统上留下两个不同版本的PHP。 build立一个.deb的编译好的PHP并安装它也是很好的做法,即使它只适用于一个单一的系统,也不会打扰依赖,只是因为它稍后更容易卸载它。 像这样卸载一个编译过的软件包和构build一个.deb的工作量差不多,所以你最好这样做。

确保您也了解CLI,CGI和Apache模块版本的PHP之间的区别。 使用基于Debian的发行版,这些都有单独的php.ini文件。 确保你卸载所有这些,并编译正确的如何运行PHP。