1.開發準備
安裝WAMP,使用的版本為WampServer Version 2.5,其中PHP的版本為5.5.12。
WAMP安裝目錄:D:\wamp
apache目錄:D:\wamp\bin\apache
php目錄:D:\wamp\bin\php
下載PHP-5.5.12源碼包,解壓到任意目錄。例如:E:\php-5.5.12
2.通過phpinfo()查詢php版本的編譯的相關資訊,主要查看:
CompilerMSVC11 (Visual C++ 2012)
Architecturex86
Zend Extension BuildAPI220121212,TS,VC11
PHP Extension BuildAPI20121212,TS,VC11
從以上的資訊可以看出WampServer 2.5中的php是通過MSVC11(VS2012)在x86(win32)進行編譯且設定了TS(Thread Safe)屬性。
所以在編譯擴充外掛程式時也需要使用相同的編譯環境及TS設定(預設值為TS)
3.產生編譯外掛程式時需要的config.w32.h檔案
開啟“VS2012 開發人員命令提示”並進入E:\php-5.5.12目錄;
執行buildconf.bat命令,該命令在目前的目錄下產生configure.js檔案;
執行configure命令,產生E:\php-5.5.12\main\config.w32.h檔案。
如果執行過程中出現bison相關的錯誤,說明你沒有安裝bison,可以開啟configure.js檔案並注釋如下三行,再重新執行configure命令。
if (!PATH_PROG('bison')) {
ERROR('bison is required')
}
為什麼可以這麼操作,因為我們不需要編譯PHP,只需要產生config.w32.h檔案,以編譯擴充外掛程式。
4.外掛程式編譯檔案準備
進入E:\php-5.5.12\ext目錄,複製E:\php-5.5.12\ext\skeleton目錄並重新命名為你所需要開發外掛程式的名字,如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:\wamp\bin\php\php5.5.12\dev\php5ts.lib複製到my_plugin目錄。
5.編譯外掛程式及安裝
使用VS2012開啟my_plugin.dsp檔案,選擇Release_TS(產生Release版本)並配置編譯為C代碼(解決方案屬性-配置屬性-C/C++-進階-編譯為-編譯為 C 代碼 (/TC));
編譯解決方案並產生外掛程式所對應的php_my_plugin.dll檔案(位於E:\php-5.5.12\Release_TS目錄);
將編譯產生的dll檔案複製到Wamp PHP擴充目錄(D:\wamp\bin\php\php5.5.12\ext);
編輯D:\wamp\bin\apache\apache2.4.9\bin\php.ini檔案,尋找"extension="關鍵字並在PHP原有外掛程式的後面添加"extension=php_my_plugin.dll";
特別注意:所編輯的php.ini不是D:\wamp\bin\php\php5.5.12\php.ini,因為Wamp初始化PHP時,讀取位置在D:\wamp\bin\apache\apache2.4.9\bin\php.ini檔案。
重啟Apache伺服器。
6.測試外掛程式
如果外掛程式載入成功,重啟Apache伺服器訪問phpinfo()即可看到新添加的my_plugin外掛程式。
產生my_plugin_test.php檔案,放置到D:\wamp\www目錄,檔案內容如下:
echo confirm_my_plugin_compiled("my_plugin");
?>
使用瀏覽器訪問上面建立的my_plugin_test.php檔案,出現如下頁面,說明外掛程式運行正常:
Congratulations! You have successfully modified ext/my_plugin/config.m4. Module my_plugin is now compiled into PHP.
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
以上就介紹了Windows WAMP PHP 擴充開發,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。