我试图在运行时加载php扩展。由于不鼓励使用dl()并且使用php扩展指令将其从PHP中删除,但它也不起作用。
ini_set('extension','php_gmp.dll');
if(extension_loaded( 'gmp' ))
echo 'GMP is Loaded';
有可能吗?
我想要这样做的原因是我的应用程序需要gmp并且想要加载gmp,即使gmp没有在Web服务器上运行。
由于
答案 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脚本提供环境 第一
祝你好运:)