使用enable_dl()无法加载扩展

时间:2013-03-13 13:58:50

标签: apache2 php-extension

我遇到与here

类似的问题

我正在使用Apache2服务器。

我做了一个名为extensionV2.so的简单扩展 我可以加载扩展程序并在我的代码中使用它

extension = extensionV2.so in php.ini.

并在我的php文件中使用它的功能。

但如果我使用

<?php

dl('extensionV2.so');
var_dump(get_loaded_modules());

?>

我收到错误

Fatal error: Call to undefined function dl() in /var/www/html/My.php on line 9

注意:

我正在使用php 5.3

根据phpinfo()

Thread Safety - disabled
Safe Mode - Off
enable_dl()  = On

我通过终端中的php -r获得所需的输出。 我知道dl()已经不再使用了apache2handlers ...是否有任何替代选项来解决dl()问题?

1 个答案:

答案 0 :(得分:1)

如果您的扩展与PHP兼容(PHP扩展应与线程安全,API编号和编译器版本中的PHP服务器匹配),则在重新启动服务器后,您不需要dl()来加载扩展您应该在phpinfo()页面中看到您的分机名称(在您的案例中为extension2),否则在加载您的分机时会出现问题。
修改-1

以下是在代码中使用dl()的替代方法:

// Try to load our extension if it's not already loaded.
if (!extension_loaded('extensionV2')) {
  if (strtolower(substr(PHP_OS, 0, 3)) === 'win') {
    if (!dl('extensionV2.dll')) return;
  } else {
    // PHP_SHLIB_SUFFIX gives 'dylib' on MacOS X but modules are 'so'.
    if (PHP_SHLIB_SUFFIX === 'dylib') {
      if (!dl('extensionV2.so')) return;
    } else {
      if (!dl('extensionV2.'.PHP_SHLIB_SUFFIX)) return;
    }
  }
}