Windows中搭建PHP擴充開發環境

來源:互聯網
上載者:User
一、提前準備下載並安裝VS2008下載PHP5.4.5程式:NTS下載TS下載 其中php二進位包分為VC6、VC8、VC9及TS和NTS版本。 VC6、VC8、VC9分別對應VC6、VC2005、VC2008 TS表示(Thread Safe),當以ISAPI(IIS SERVER)允許時,因為是單進程中執行多線程,為避免記憶體流失和共用變數安全,建議使用TS版本。 當以FAST_CGI等以單一進程來執行,這樣就無需進行線程的安全檢查。下載PHP5.4.5源碼下載PHP-SDK下載MSYS,它包括Windows下linux編譯器的實現下載deps下面的配置基礎,以f:\php_stdio檔案夾為基礎二、編譯PHP

首先下載php-sdk,先下載較新的php-sdk-binary-tools-20110915.zip,解壓到

f:\php_stdio\php-sdk

目錄下。注意,解壓後,這個目錄下應該有bin和script子目錄。

開一個cmd視窗,切換到f:\php_stdio\php-sdk目錄下,運行vcvarsall.bat來設定好編譯環境變數。

VS2008安裝路徑\VC\vcvarsall.bat

這裡vcvarsall.bat的具體目錄要根據你自己的安裝位置而定。

接著,進入在cmd視窗裡繼續運行以下命令:

bin\phpsdk_setvars.bat

bin\phpsdk_buildtree.bat php54dev

這樣,在f:\php_stdio\php-sdk目錄下又多了一個php54dev目錄。

接著繼續將deps解壓到

f:\php_stdio\php-sdk\php54dev\vc9\x86\

目錄下。原來這個目錄下的deps目錄下的所有子目錄均是空目錄,解壓後,應該複製進很多必要的模組/擴充所需的庫檔案。

接下來,將PHP-5.4.5源碼目錄複寫一份到

f:\php_stdio\php-sdk\php54dev\vc9\x86\

目錄下。進入php源碼目錄

cd f:\php_stdio\php-sdk\php54dev\vc9\x86\php-5.4.5

運行

buildconf

然後就可以先試著編譯php了。最開始,一般編譯儘可能少的模組,先讓核心能正常編譯出來:

configure --disable-all --enable-cli

      這一步的主要目的是產生config.w32.h,如果需要產生PHP,可以繼續執行nmake clean; nmakephp5.4最核心部分及一個命令列工具就編譯出來了。nmake clean是為了避免遺留編譯中間結果檔案帶來幹擾。

三、建立新擴充my_fopenPHP擴充的基礎結構相同,為方便開發PHP提供了ext_skel和ext_skel_win32.php分別是linux、windows下的擴充骨架搭建工具。此次講的是Windows中搭建PHP擴充開發環境,所以使用的是ext_skel_win32.php。用它產生的新擴充骨架,可以直接用VS開啟。是ext_skel_win32.php支援的參數常用的主要是--extname和--proto:extname:指定擴充的名稱proto:為了便於快速構建函數骨架,可以建立一個檔案,並寫入各函數的定義。

cd f:\php_stdio\php-sdk\php54dev\vc9\x86\php-5.4.5\extphp ext_skel_win32.php --extname=my_fopen

出現上述執行結果,表示新擴充骨架產生成功,現在開啟f:\php_stdio\php-sdk\php54dev\vc9\x86\php-5.4.5\ext可以看到my_fopen檔案夾。進入my_fopen可以看到my_fopen.dsp,它就是VS的專案檔。現在可以開發你想要的擴充程式了。四、編譯、使用擴充目前建立的擴充中並未建立任何函數介面,但預設的擴充為我們提供了一個測試的函數介面,預設函數的命名規則是:confirm_[extname]_compiled函數介面:tring confirm_[extname]_compiled(string)1.用VS開啟my_fopen.dsp2.設定項目屬性-》配置屬性-》C/C++-》代碼產生,設定運行庫:多線程 DLL (/MD)3.設定項目屬性-》配置:切換到Release_TS4.設定項目屬性-》配置屬性-》C/C++-》進階,設定編譯為:編譯為 C 代碼 (/TC)5.設定項目屬性-》配置屬性-》連結器》常規,設定輸出檔案:Release_TS/php_my_fopen.dll。如果不設定,當編譯產生擴充後,找起來會比較麻煩。所以這項設定不是必須的。6.設定項目屬性-》配置屬性-》連結器》常規,增加附加庫目錄:F:\php_work\php-5.4.5\dev如果不設定此選項,編譯時間會報:無法開啟輸入檔案“php5ts.lib”
7.最後按F5,執行編譯。會產生php_my_fopen.dll
成功1個,表示dll產生成功。現在擴充已經編譯成功,接下來是在PHP中使用它。8.拷貝php_my_fopen.dll至F:\php_work\php-5.4.5\ext下8.開啟F:\php_work\php-5.4.5\php.ini,添加extension=ext/php_my_fopen.dll9.建立F:\php_work\test.php<?php
echo confirm_my_fopen_compiled("test");

五、編譯新擴充遇到的問題1.fatal error C1902: 程式資料庫管理員不匹配;請檢查安裝
mspdbsrv.exe 或 mspdbcore.dll 丟失或者其版本和 mspdb80.dll 的版本不同,確定這三個檔案的相同版本安裝在系統裡。
在VC安裝目錄下的\Common7\IDE 目錄下拷貝這三個檔案到 安裝目錄下的VC\bin下即可

2. ../main/config.w32.h開啟失敗
PHP源碼進行configure後才會產生config.w32.h

3.無法開啟輸入檔案“php5ts.lib”
設定工程屬性頁面中的C++->進階->編譯為改為編譯為C代碼(/TC),連結器->附加庫目錄加一項PHP二進位包的dev目錄。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.