我想在Windows上自定义php扩展(php_ext.dll
),但是这个扩展需要使用其他a.dll
文件(这个dll是我自己构建的)。
PHP构建ENV:vs2008 + win7
当我构建php_ext.dll
时,我已将a.lib
添加到php扩展的项目中。
构建成功后,我将a.dll
和php_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行的未知中
答案 0 :(得分:0)
这是因为使用php -m
运行php二进制文件,使用apache将php加载为dll。
在这种情况下,dll搜索顺序启动:在第一种情况下,找到a.dll,因为它位于php二进制文件的位置,但是当运行apache二进制文件时找不到它,因为它不在其目录中,并且也没有其他搜索目录。
您可以复制a.dll do apache文件夹,也可以复制到任何其他搜索文件夹,例如c:\ Windows。