1. 程式人生 > WINDOWS開發 >php beast windows編譯教程

php beast windows編譯教程

  • git clone https://github.com/Microsoft/php-sdk-binary-tools.git c:\php-sdk
  • cd c:\php-sdk
  • git checkout php-sdk-2.1.9or later
  • invokephpsdk-vc15-x64.bat
  • phpsdk_buildtree phpmaster
  • git clone https://github.com/php/php-src.git && cd php-src,or fetch a zipball
  • phpsdk_deps --update --branch master,usephpsdk_deps --update --branch X.Y
    for a non master branch
  • do the build,eg.buildconf && configure --enable-cli && nmake

Windows編譯PHP拓展

1.離線下載並安裝Build Tools(對應Visual Studio 2017)

下載連線:vs_buildtools.exe
離線下載指令碼:

vs_buildtools.exe --layout E:\VS2017BuildTools --add Microsoft.VisualStudio.Workload.VCTools --lang zh-CN

2. 下載,解壓PHP-SDK工具包

https://github.com/Microsoft/php-sdk-binary-tools

3.PHP-SDK配置,載入

# 命令列進入解壓路徑,按自己需求執行對應的批處理指令碼
>phpsdk-vc15-x64.bat
$> phpsdk_buildtree phpdev

4. 下載PHP-SDK編譯依賴元件

$> phpsdk_deps -u 
# 或手工下載([依賴下載連結](https://windows.php.net/downloads/php-sdk/deps))並解壓至deps目錄
# 下載目錄對應當前上級目錄檔名

5. 下載,複製
PHP原始碼
,下載,複製擴充套件原始碼。

  • 可在當前目錄下載,解壓多個PHP版本的原始碼。
  • vc## 編譯工具版本(eq vc15),x## CPU版本 (x86 or x64)
  • 解壓複製PHP原始碼至phpdev\vc##\x##\php-7.3.7-src
  • 解壓複製擴充套件原始碼至phpdev\vc##\x##\php-7.3.7-src\ext或phpdev\vc##\x##\pecl
  • beast擴充套件需要複製win95nt.hphp-7.3.7-src\main目錄。(此檔案建議下載一個PHP7.1x的原始碼,在main目錄。)

務必修改beast原始碼檔案config.w32,替換為如下內容。原始碼有錯誤,作者後期新加的程式碼漏了execute-normal-script配置資訊:

// $Id$
// vim:ft=javascript

// If your extension references something external
ARG_WITH("beast","for beast support","yes,shared");


ARG_ENABLE("beast","enable beast support",shared");

ARG_ENABLE("beast-debug","enable beast debug mode","no");

ARG_ENABLE("execute-normal-script","Enable execute normal PHP script","yes");

if (PHP_BEAST != "no") {
	if (PHP_BEAST_DEBUG != "no") {
		AC_DEFINE(‘BEAST_DEBUG_MODE‘,1,‘Debug support in beast‘);
	}
	if (PHP_EXECUTE_NORMAL_SCRIPT != "no") {
		AC_DEFINE(‘BEAST_EXECUTE_NORMAL_SCRIPT‘,[ ]);
	}
	
	EXTENSION("beast","beast.c aes_algo_handler.c des_algo_handler.c base64_algo_handler.c beast_mm.c spinlock.c cache.c beast_log.c global_algo_modules.c header.c networkcards.c tmpfile_file_handler.c file_handler_switch.c shm.c",true);
}

6. 編譯擴充套件

$>cd php-7.3.7-src
$>buildconf
$>configure --help   #查詢編譯擴充套件關鍵字,確定配置引數
# 執行緒安全編譯
$>configure --disable-all --enable-cli --without-beast --enable-execute-normal-script=yes --disable-beast=shared && nmake
# 非執行緒安全編譯
$>configure --disable-zts --disable-all --enable-cli --without-beast --enable-execute-normal-script=yes --disable-beast=shared && nmake

重新編譯指令碼

# Recompile after you have done some changes
1. Clean up old compiled binaries
nmake clean
2. If you need to update the ‘configure‘ script
buildconf --force
3. Create your makefile: see release
configure --disable-all --enable-cli --enable-$remains
4. Compile
nmake

引用資源

  1. 在windows10下php7.3+編譯phalcon擴充套件https://www.jianshu.com/p/9dca99f7d4a9
  2. Windows編譯PHP7.2拓展https://segmentfault.com/a/1190000016011547
  3. https://wiki.php.net/internals/windows/stepbystepbuild_sdk_2
技術分享圖片

jenawantcommentedon 4 Dec 2019

你直接在vs裡面編譯就好了

你好,請教一下,目前PHP用的版本是5.6,應該如何生成dll呢?試了好多網上的方案,都不行,還請指導一下 ,謝謝。

技術分享圖片

Refactoringcommentedon 4 Dec 2019

@jenawant
5.6我這也沒有成功,放棄5.6了。我編譯環境太多,最後再沒折騰。
伺服器自己有權折騰,就升級吧,同樣的程式碼7.x效能好的不得了(開啟opcache)。

技術分享圖片

jenawantcommentedon 5 Dec 2019

edited

@Refactoring

感謝回覆,基於你的方案,然後參考PHP官方文件,在5.6.40下編譯成功了,謝謝。
接受你的建議,接下來,要搞PHP7的版本。

引用資源:http://ishere.cn/2019/12/05/windows10-compile-php-extension.html