使用yum或apt-get时如何安装PHP

时间:2013-06-14 04:23:56

标签: php yum

我总是得到关于幕后工作原理的奇怪问题。我知道如何从源代码编译php,我知道如果你从源代码编译它并忘记添加模块/库你需要重新编译php来添加它。但是,如果你安装php让我们说使用yum,然后你想添加另一个扩展,你只需要安装该扩展。例如,今天我正在研究最近安装的Fedora 18机器,并且php缺少DOM库,这很奇怪,因为该库默认启用。似乎yum安装了php,并禁用了该扩展。无论如何,因为它丢失了,我不得不这样做:

sudo yum install php-xml

这解决了这个问题,但它让我想知道,在这种情况下安装过程如何? php重新编译?如果是这样,它如何记住以前可能添加的所有其他扩展?或者是xml扩展单独安装并以某种方式链接到php?

我没有找到任何关于此的信息,我真的很好奇它是如何工作的。

3 个答案:

答案 0 :(得分:1)

您可以单独构建扩展程序,每次需要添加新扩展程序时都不必重建php,只需要在[extensions]下定义需要加载的扩展程序php.ini

当你构建php时,你可以指定你需要静态(包含)在php二进制文件中的哪些扩展,而你曾经想要作为共享库。

configure --enable-http=static --with-openssl=shared
// http extension will be included in PHP
// openssl extension will be compiled as separate DLL

答案 1 :(得分:1)

使用像yum或apt-get这样的包管理器安装php扩展包时,存储库已经为系统附带的php版本编译了已扩展的扩展包。例如,如果您使用的是Ubuntu 12.04,并且您执行apt-get install php-mysqlnd,则会从​​存储库中获取deb软件包,其中包含预编译的mysqlnd.so和默认的mysqlnd.ini。这是因为deb包具有根据为12.04版本安装的默认依赖项的编译版本。如果缺少某些依赖项,则会对相同的预编译deb包进行提取,从而无需进行配置和make。这使得它更快更容易。几乎即插即用!

答案 2 :(得分:0)

Yum连接到预编译rpm的存储库。 Yum将下载rpm及其依赖项并安装它们。

Yum将针对不同的操作系统使用不同的存储库。例如Fedora 18有一个不同的预编译rpms的存储库,然后Fedora 17会有。

百胜只是一个美化的依赖管理系统