如何从源安装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,并执行以下命令:
>
这将在默认设置为homestead的路径中创建一个有效的PHP信息文件。刷新URL现在将产生一个phpinfo屏幕:
<span>cd Code </span><span>git clone https://github.com/Swader/publicinfo</span>
准备环境
>要从源构建扩展,我们需要安装在计算机上的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。
安装捆绑的扩展
>
>看到INTL扩展名需要ICU库作为先决条件(如需求中所述),让我们先安装。
在其他分布下,安装说明可能会有所不同。最好是参考ICU网站或此步骤的个人发行文档。
<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>
让我们解释一下发生的事情。
>- ./配置-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扩展文件夹中是否确实在列出的。
如您所见,在那里,它们在鲜绿色中突出显示。
- >您可以将行扩展线= mongo.so。这起作用,在大多数情况下是一种完全有效的方法。 >
- >您可以为每个中的每个文件创建一个单独的INI文件,将它们放入加载php.ini后自动包含的文件夹中,并以这种方式维护php.ini的分离和隔离。这种方法更健康,尽管很难实现。 >
- 您可以组合2)和用于启用PHP mod的默认工具。宅基地使用这种方法,我们也会。 >
<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>
有四个条目的原因是我们具有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>
成功!
要删除扩展,除非您在空间上确实很低,否则无需删除任何实际文件。您可以通过三种方式进行:
如果您有可用的工具,请运行php5dismod。这与上述PHP5ENMOD工具相反。 .SO文件将保留在适当的位置,并且INI文件将保留在mods-ovail中,它们只是不会加载,因为它们的符号链接将从fpm和cli conf.d文件夹中删除。
>手动删除符号链接。例如。 sudo rm /etc/php5/cli/conf.d/mongo.ini
- >如果将扩展名直接放入php.ini文件中,从php.ini文件中删除这些行,或者更好,请对其进行评论,以便在您改变主意的情况下可以进一步使用。
- 结论 如您所见,即使没有精确的说明,从源安装扩展也非常简单,即使扩展名不受操作系统的官方存储库的支持。下次您需要在 *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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

PHP8.1中的枚举功能通过定义命名常量增强了代码的清晰度和类型安全性。1)枚举可以是整数、字符串或对象,提高了代码可读性和类型安全性。2)枚举基于类,支持面向对象特性,如遍历和反射。3)枚举可用于比较和赋值,确保类型安全。4)枚举支持添加方法,实现复杂逻辑。5)严格类型检查和错误处理可避免常见错误。6)枚举减少魔法值,提升可维护性,但需注意性能优化。

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

RESTAPI设计原则包括资源定义、URI设计、HTTP方法使用、状态码使用、版本控制和HATEOAS。1.资源应使用名词表示并保持层次结构。2.HTTP方法应符合其语义,如GET用于获取资源。3.状态码应正确使用,如404表示资源不存在。4.版本控制可通过URI或头部实现。5.HATEOAS通过响应中的链接引导客户端操作。

在PHP中,异常处理通过try,catch,finally,和throw关键字实现。1)try块包围可能抛出异常的代码;2)catch块处理异常;3)finally块确保代码始终执行;4)throw用于手动抛出异常。这些机制帮助提升代码的健壮性和可维护性。

匿名类在PHP中的主要作用是创建一次性使用的对象。1.匿名类允许在代码中直接定义没有名字的类,适用于临时需求。2.它们可以继承类或实现接口,增加灵活性。3.使用时需注意性能和代码可读性,避免重复定义相同的匿名类。
