我遇到与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()问题?
答案 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;
}
}
}