首页 >后端开发 >php教程 >如何从源安装PHP扩展

如何从源安装PHP扩展

Joseph Gordon-Levitt
Joseph Gordon-Levitt原创
2025-02-20 09:38:09414浏览

如何从源安装PHP扩展

有时,在安装PHP之前,很难知道您需要哪些PHP扩展。如果您以后需要添加扩展名,则可能会很幸运,并且扩展程序可能位于所使用的操作系统的存储库中。这可能只是一个简单的sudo apt-get安装php5-intl。但是,在其他情况下,您可能需要从Source安装它 - Phalcon就是一种情况,但是通过引入供应商支持,快捷方式和预编写的说明,该过程使您的操作系统非常简单。但是,如果其他扩展程序没有这样的东西?

> 在本教程中,我们将在Linux Systems上安装一些自定义扩展(OS X - 过程几乎相同)。该过程与我们已经在Nitrous.io上所做的非常相似,但适用于本地环境 - 更具体地说,是Laravel Homestead。您可以轻松地从本教程得出安装说明,并将其应用于其他发行版。

钥匙要点

>从源安装PHP扩展名需要PHP开发工具和计算机上安装的编译器,以及PHP源代码和扩展的源代码。
    >从源安装PHP扩展的过程涉及多个步骤:下载源代码,准备使用PHPIZE编译的扩展程序文件夹,配置编译环境,将源编译到.SO文件中,然后将此文件移动到该文件中当前的PHP安装的扩展文件夹。
  • 安装后,需要通过将其添加到php.ini文件中或为文件夹中的每个扩展程序创建一个单独的INI文件来启用PHP扩展,该文件夹加载了Php.ini后自动包含。
  • 要删除扩展,您可以使用php5dismod工具,手动删除符号链接或从php.ini文件中删除启用行。
  • 启动VM
  • 如果您还没有,请阅读上面链接的宅基地帖子,然后启动并运行。运行新的Homestead盒子后,您立即应该能够执行此操作:
  • >

>这很好,这是因为默认安装的文件夹实际上还不包含任何文件。现在,vagrant ssh进入VM,并执行以下命令:

>

如何从源安装PHP扩展这将在默认设置为homestead的路径中创建一个有效的PHP信息文件。刷新URL现在将产生一个phpinfo屏幕:

<span>cd Code
</span><span>git clone https://github.com/Swader/publicinfo</span>

准备环境

>要从源构建扩展,我们需要安装在计算机上的PHP开发工具,以及可以生成扩展文件的编译器。以下是您在各种操作系统上安装这些先决条件的方式:如何从源安装PHP扩展

ubuntu

<span>cd Code
</span><span>git clone https://github.com/Swader/publicinfo</span>

fedora

<span>sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev</span>

rhel

<span>sudo yum install php-devel php-mysqlnd gcc libtool</span>

> suse

<span>sudo yum install php-devel php-mysql gcc libtool</span>

如果您使用的是最新的宅基地,则所有这些工具都将为您安装。准备所有准备的东西,让我们开始安装扩展名。

>安装扩展

>您可以安装两种类型的扩展:与PHP捆绑但默认未安装,第三方扩展。诸如Phalcon之类的第三方扩展通常通过提供快捷方式使安装过程变得更加容易,因为它们不必遵守某些传统捆绑的PHP扩展。

首先,让我们进入VM上的主文件夹:CD〜。在那里,制作下载文件夹,然后将CD添加到其中。安装捆绑的扩展程序时,您需要在计算机上使用PHP的源代码,最好是与当前版本相匹配。 Homestead版本的使用率为5.5.12,所以我将下载一个:>

>我正在使用上面的比利时镜子,随意使用下载档案中的一个或任何其他镜子。
<span>yast2 -i php5-pear php5-devel php5-mysql gcc</span>

>要查看所有捆绑扩展的源,请进入未架构的PHP源代码文件夹中的EXT文件夹,并使用LS。

安装捆绑的扩展如何从源安装PHP扩展

首先,如果您还没有安装它,我们将安装PHP-INTL扩展程序。如果这样做,那很好 - 您将在下面看到的安装过程对于每个捆绑的PHP扩展程序都是相同的。 INTL扩展是用于国际化的 - 如果您有兴趣,请在此处阅读更多。

>

>看到INTL扩展名需要ICU库作为先决条件(如需求中所述),让我们先安装。

在其他分布下,安装说明可能会有所不同。最好是参考ICU网站或此步骤的个人发行文档。>

安装了ICU后,请在仍在Ext文件夹中的同时进行以下操作:>
<span>wget http://be2.php.net/distributions/php-5.5.12.tar.bz2
</span><span>tar xvjf php-5.5.12.tar.bz2
</span><span>cd php-5.5.12</span>

让我们解释一下发生的事情。

>
    phpize准备扩展名的文件夹以进行补充。它允许您通过创建配置文件来执行后续命令,并基本上使扩展程序的文件夹“思考”它是PHP本身。实际上,PHPize之后的过程与您从源中安装PHP时要做的事情相同 - 仅在这种情况下,只需编译PHP的片段并准备与已编译和安装的PHP一起使用。
  • ./配置-enable-intl配置编译环境。它准备了编译器将需要制作Intl.so文件所需的所有内容。即使我们在INTL文件夹中,启用式标志也是必要的,因为该文件夹有效地认为它是
  • > php,并且我们需要帮助它实现这种幻觉。该命令告诉它:“好,您是PHP的源代码。现在编译并使用INTL扩展名安装。
  • > make将把源汇编为intl.o,将文件放在您当前所在的文件夹中,在模块子文件夹下方。 sudo make install会将此文件移至当前PHP安装的扩展文件夹中。> >我们现在需要做的就是通过让php.ini消耗它来启用扩展。我们稍后会这样做,让我们首先编译第三方扩展。
  • >
  • 安装第三方扩展
  • 我们将安装Mongo作为第三方扩展。 Mongo有二进制分布,使安装变得更简单,但为了教育,让我们手动进行。我们假设您已经安装了实际的Mongo,因此仅关注PHP扩展名。如果您没有安装Mongo,请参阅其安装文档。
  • >

>这已经构建了我们的mongo.so文件,并将其放入PHP安装的扩展文件夹中。我们将在下一部分中启用它。

启用和测试
<span>cd Code
</span><span>git clone https://github.com/Swader/publicinfo</span>

查看我们的php扩展文件夹中是否确实在列出的。 如何从源安装PHP扩展

如您所见,在那里,它们在鲜绿色中突出显示。 为了使它们启用,我们需要告诉php.ini。有几种方法可以做到这一点:

  1. >您可以将行扩展线= mongo.so。这起作用,在大多数情况下是一种完全有效的方法。
  2. >
  3. >您可以为每个中的每个文件创建一个单独的INI文件,将它们放入加载php.ini后自动包含的文件夹中,并以这种方式维护php.ini的分离和隔离。这种方法更健康,尽管很难实现。
  4. >
  5. 您可以组合2)和用于启用PHP mod的默认工具。宅基地使用这种方法,我们也会。
  6. >
<span>cd Code
</span><span>git clone https://github.com/Swader/publicinfo</span>

此文件夹是所有此类INI文件的存储库。在此处创建两个新文件:

<span>sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev</span>

这些命令创建了两个新的INI文件,每个文件都用于我们以前构建的扩展之一。由于它们现在在mods-ovabable文件夹中,我们可以使用已经可用的php5enmod(hart for php enable mod)命令行工具。>

<span>sudo yum install php-devel php-mysqlnd gcc libtool</span>
>注意:如果您没有PHP5ENMOD工具,则将INI文件链接到各种PHP Runtimes的Conf.d文件夹中,将有能力:>

有四个条目的原因是我们具有PHP的命令行版本和PHP的FPM版本。每个人都使用自己的php.ini文件,每个文件都会加载自己的conf.d文件夹以进行扩展 - 因此,如果我们希望全方位的扩展名可用。仅当您没有php5enmod工具时,才使用此方法。
<span>sudo yum install php-devel php-mysql gcc libtool</span>
>

最后,让我们重新启动nginx和php-fpm加载这些更改。

查看我们是否已安装了它们,请从之前刷新Phpinfo屏幕并分别搜索Mongo和Intl。

>
<span>yast2 -i php5-pear php5-devel php5-mysql gcc</span>

成功!如何从源安装PHP扩展

删除扩展

要删除扩展,除非您在空间上确实很低,否则无需删除任何实际文件。您可以通过三种方式进行:

如果您有可用的工具,请运行php5dismod。这与上述PHP5ENMOD工具相反。 .SO文件将保留在适当的位置,并且INI文件将保留在mods-ovail中,它们只是不会加载,因为它们的符号链接将从fpm和cli conf.d文件夹中删除。

>手动删除符号链接。例如。 sudo rm /etc/php5/cli/conf.d/mongo.ini

    >如果将扩展名直接放入php.ini文件中,从php.ini文件中删除这些行,或者更好,请对其进行评论,以便在您改变主意的情况下可以进一步使用。
  1. 结论
  2. 如您所见,即使没有精确的说明,从源安装扩展也非常简单,即使扩展名不受操作系统的官方存储库的支持。下次您需要在 *NIX系统上的PHP安装中添加扩展名(此教程也适用于OS X),请参阅此帖子以获取更新。

    请在下面留下您的反馈,让我知道您是否对特定的扩展程序感到困惑,并希望帮助安装它。>

    经常询问的问题(常见问题解答)有关从源

    安装PHP扩展的问题

    >从源安装PHP扩展的先决条件是什么?首先,您需要在系统上安装PHP。您还需要设置PHP开发环境,其中包括编译器和制造商等工具。此外,您需要使用PHP源代码,因为您将直接从此代码中构建扩展名。最后,您需要具有扩展名的源代码。通常可以从扩展名的官方网站或诸如PECL等存储库中下载。

    >

    >我如何验证是否正确安装了PHP扩展名?

    >

    >

    >它通过使用phpinfo()函数安装。此功能提供了有关您的PHP安装的大量信息,包括已安装的扩展名列表。要使用它,请在Web服务器的文档root中创建一个新的PHP文件,将调用添加到phpinfo(),然后在Web浏览器中查看此文件。已安装的扩展名在“ PHP Core”部分中列出。

    >我可以在Windows系统上安装PHP扩展吗?但是,与Unix样系统相比,该过程略有不同。您通常会下载预编译的DLL文件并将其添加到PHP安装中,而不是从源中编译扩展名。 php.net网站提供了有关如何执行此操作的详细说明。

    >

    如果在安装过程中遇到错误,该怎么办?

    如果您在安装过程中遇到错误,则该怎么办步骤是仔细阅读错误消息。它通常包含有关出了什么问题的线索。常见问题包括缺失依赖项,不正确的配置选项以及PHP源代码问题。如果您无法自己解决问题,请考虑向PHP社区寻求帮助。您可以在其中要求提供帮助的许多论坛和邮件列表。

    我如何更新PHP扩展名?

    >更新PHP扩展程序通常涉及下载扩展程序的源代码和源代码的最新版本和然后重复安装过程。但是,确切的步骤可以根据扩展而有所不同。最好检查扩展程序的官方文档中的特定更新说明。

    我可以一次安装多个PHP扩展名吗?这可以通过在configure命令中指定多个扩展名来完成。但是,请记住,每个扩展程序可能具有自己的一组依赖项和配置选项。

    >如何卸载PHP扩展名?

    卸载PHP扩展程序涉及从php.ini文件中删除扩展名的配置,然后重新启动Web服务器。如果将扩展名安装为共享模块,则您也可能需要删除模块的.so或.dll文件。

    >什么是pecl存储库?

    > pecl存储库是一个集合以源代码分配的PHP扩展名。可以使用PECL命令安装这些扩展名,该命令可以自动下载,编译和安装扩展名的过程。

    >

    >我可以安装php扩展程序而无需root访问吗?

    是的,可以安装无根访问的PHP扩展。这可以通过在主目录中安装PHP然后在此处安装扩展名来完成。但是,这种方法需要更多的技术知识,并且可能不适合所有用户。

    >

    有哪些常见的PHP扩展名?它们做了什么?

    >

    有许多可用的PHP扩展名PHP语言的其他功能。一些常见的扩展名包括用于与MySQL数据库进行交互的mysqli,用于创建和操纵图像文件的GD以及用于制作HTTP请求的卷曲。>

以上是如何从源安装PHP扩展的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn