我正在編寫的擴展是特定庫的包裝。在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:問題解決與重新啓動虛擬機和更新系統路徑。
你是否將它們包含在'php.ini'文件中? –
@Victor,是的,我做到了。無W/o外部依賴關係擴展正在工作。 – Lev
也許你應付擴展文件不在那裏,庫放置在哪裏?你會重新啓動服務器嗎? –