2014-01-19 61 views
0

我正在編寫的擴展是特定庫的包裝。在Linux上,我的擴展通過cli都可以很好地工作,但在Windows上,它只能在cli中工作。阿帕奇給我一個錯誤:PHP擴展不能在Windows上使用Apache

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\php\eps_api.dll' - The specified module could not be found.\r\n in Unknown on line 0

我敢肯定指定的DLL是存在的。

當我編譯沒有任何外部依賴關係的簡單擴展時,它可以工作,但是當我使用外部dll的函數時,它失敗。外部的dll在PATH中,我會再說一遍,php-cli的效果很好。

然後我嘗試在RINIT中使用LoadLibrary()函數,但它也失敗,錯誤126(模塊無法找到)在Apache中,並在cli中工作。

我的擴展是用MSVC9編譯的,外部庫用MinGW 4.6.2編譯,我想這是麻煩。 。導出表使用CMake函數GNUtoMS轉換爲.lib。 Apache版本2.2.26,Windows XP SP3。

任何想法如何使其工作?根據您的要求配置,記錄或技術信息。

P.S.對不起,我的英語不好。

編輯:我寫了測試腳本,打印PATH變量,並且由apache返回的結果與從cmd給出的結果有很大不同。 所以問題是如何更改Apache中的PATH?我搜索了註冊表中的條目,試圖在httpd.conf中使用SetEnv指令,但沒有結果。

編輯2:問題解決與重新啓動虛擬機和更新系統路徑。

+0

你是否將它們包含在'php.ini'文件中? –

+0

@Victor,是的,我做到了。無W/o外部依賴關係擴展正在工作。 – Lev

+0

也許你應付擴展文件不在那裏,庫放置在哪裏?你會重新啓動服務器嗎? –

回答

0

在Windows上,該特定的錯誤消息可能意味着未找到指定模塊的依賴關係。抓住「depend.exe」並確保Apache的PATH具有所有必需的傳遞依賴關係。

+0

Apache路徑與系統之一不同嗎?我如何配置它? – Lev