如何在php扩展中包含其他dll?

时间:2014-10-09 12:50:39

标签: php apache php-extension

我想在Windows上自定义php扩展(php_ext.dll),但是这个扩展需要使用其他a.dll文件(这个dll是我自己构建的)。 PHP构建ENV:vs2008 + win7 当我构建php_ext.dll时,我已将a.lib添加到php扩展的项目中。

构建成功后,我将a.dllphp_ext.dll复制到php extension dir,然后将extension =php_ext.dll添加到php.ini

当我在Windows命令中运行php -m时,我可以看到此扩展,但是当我启动Apache时,此扩展无法加载。以下是Apache错误日志:

  

[warn] Init:未配置会话缓存[提示:SSLSessionCache]   httpd.exe:无法可靠地确定服务器的完全限定域名,使用10.64.74.148 for ServerName

     

PHP警告:PHP启动:无法加载动态库'C:\ php \ php_ext.dll' - 找不到指定的模块。\ r \ n在第0行的未知中

1 个答案:

答案 0 :(得分:0)

这是因为使用php -m运行php二进制文件,使用apache将php加载为dll。

在这种情况下,dll搜索顺序启动:在第一种情况下,找到a.dll,因为它位于php二进制文件的位置,但是当运行apache二进制文件时找不到它,因为它不在其目录中,并且也没有其他搜索目录。

您可以复制a.dll do apache文件夹,也可以复制到任何其他搜索文件夹,例如c:\ Windows。