如何在运行时运行php扩展

时间:2014-09-05 12:08:33

标签: php

我试图在运行时加载php扩展。由于不鼓励使用dl()并且使用php扩展指令将其从PHP中删除,但它也不起作用。

ini_set('extension','php_gmp.dll');

if(extension_loaded( 'gmp' ))
    echo 'GMP is Loaded';

有可能吗?

我想要这样做的原因是我的应用程序需要gmp并且想要加载gmp,即使gmp没有在Web服务器上运行。

由于

3 个答案:

答案 0 :(得分:0)

dl()是实现这一目标的唯一理论方法,ini_set()将不起作用,因为extension指令只会在PHP的启动时得到处理。但是,在运行时加载扩展可能被认为是不好的做法,因为这可以用来规避管理限制。

此外,它只是一个理论选项,因为大多数共享网络托管服务商都会停用dl()功能,will not being available at all in PHP>5.3 and the most SAPIs because of some stability issues)

启用GMP支持的唯一方法是购买您root的网络托管计划,并且可以安装您想要的软件,但您可能也可以使用BC math吗?

答案 1 :(得分:0)

无法通过ini_set加载扩展程序。 extension指令只能在 php.ini 中进行更改,如Path and Directories部分所述。

答案 2 :(得分:0)

有一个名为dl的函数,在PHP 5.3之前一直受支持。请注意,此功能已从PHP 5.3中的大多数SAPI中删除,并已从PHP-FPM中的PHP 7.0.0中删除。

dl Loads a PHP extension at runtime

  
      使用ZTS支持构建PHP时,不支持
  • dl()。

  •   
  • dl()在Unix平台上区分大小写。

  •   
  • 当PHP以安全模式运行时,此功能被禁用。

  •   

还有一个php变量可以在ini文件中设置,需要访问配置。     扩展在PHP启动时加载哪些可动态加载的扩展。

  

一个选项是PEAR打包你的代码并添加依赖关系   必要的扩展。然后代码会警告您或拒绝安装   如果缺少扩展名。

*注意:不要搜索任何ini_set相关方法,因为它从未支持在运行时加载扩展程序。

实现您想要的最佳实践和唯一方法是为您的php脚本提供环境    第一

祝你好运:)