1.開發準備
安裝WAMP,使用的版本為WampServer Version 2.5,其中PHP的版本為5.5.12。
WAMP安裝目錄:D:wamp
apache目錄:D:wampbinapache
php目錄:D:wampbinphp
下載PHP-5.5.12源碼包,解壓縮到任意目錄。例如:E:php-5.5.12
2.透過phpinfo()查詢php版本的編譯的相關信息,主要查看:
CompilerMSVC11 (Visual C++ 2012)
Architecturex8620120320 ,TS,VC11
PHP Extension BuildAPI20121212,TS,VC11
從以上的資訊可以看出WampServer 2.5中的php是透過MSVC11(VS2012)在x86(win32) 編譯且設定了屬性。 所以在編譯擴充插件時也需要使用相同的編譯環境及TS設定(預設值為TS)3.產生編譯外掛時需要的config.w32.h檔案
開啟「VS2012 開發人員指令提示」並進入E :php-5.5.12目錄;
執行buildconf.bat指令,該指令在目前目錄下產生configure.js檔;
執行configure指令,產生E:php-5.5.12mainconfig.w32.h檔。
如果執行過程中出現bison相關的錯誤,表示你沒有安裝bison,可以開啟configure.js檔案並註解如下三行,再重新執行configure指令。
if (!PATH_PROG('bison')) {
ERROR('bison is required')
} 為什麼可以這樣做,因為我們不需要編譯PHP,只需要產生config.w32.擴充插件。 4.插件編譯文件準備
進入E:php-5.5.12ext目錄,複製E:php-5.5.12extskeleton目錄並重命名為你所需要開發插件的名字,如my_plugin;
將php_skeleton.h,skeleton.c和skeleton.dsp重新命名為php_my_plugin.h,my_plugin.c和my_plugin.dsp;
分別打開上面的三個文件,將文件中的extname替換為my_plugin,EXTNAME MY_PLUGIN(保證大小寫一致);
D:wampbinphpphp5.5.12devphp5ts.lib複製到my_plugin目錄。
5.編譯插件及安裝
使用VS2012開啟my_plugin.dsp文件,選擇Release_TS(產生Release版本)並設定編譯為C程式碼(解決方案屬性-設定屬性-C/C++-高階-編譯為-編譯為C 程式碼(/TC));
編譯解決方案並產生插件所對應的php_my_plugin.dll檔案(位於E:php-5.5.12Release_TS目錄);
將編譯產生的dll檔案複製到Wamp PHP PHP目錄(D:wampbinphpphp5. 5.12ext);
編輯D:wampbinapacheapache2.4.9binphp.ini文件,查找"extension="關鍵字並在PHP原有插件的後面添加"extension=php_my_plugin.dll";
特別注意:所編輯的php.ini不是D:wampbinphpphp5.5.12php.ini,因為Wamp初始化PHP時,讀取位置在D:wampbinapacheapache2.4.9binphp.ini檔案。
重啟Apache伺服器。
6.測試外掛程式
如果外掛程式載入成功,重新啟動Apache伺服器存取phpinfo()即可看到新加入的my_plugin外掛程式。
產生my_plugin_test.php文件,放置到D:wampwww目錄,檔案內容如下:
echo confirm_my_plugin_compiled("my_plugin");
_mm ?> ,說明插件運作正常:
Congratulations! You have successfully modified ext/my_plugin/config.m4. Module my_plugin is now compiled into PHP.
版權聲明:本文為部落客原創文章,未經博主不得轉載。