SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
Windows で
PHP をビルドしてみた
内山 雄司 (@y__uti)
2016/01/27 第98回 PHP 勉強会
今日の発表
やってみたこと
◦ Windows で PHP をビルドしてみた
わかったこと
◦ Windows で PHP をビルドするのは簡単
2014/01/27 第 98 回 PHP 勉強会 2
Windows でのビルド手順
公式ウェブサイトに説明あり
◦ https://wiki.php.net/internals/windows/stepbystepbuild
2014/01/27 第 98 回 PHP 勉強会 3
PHP のビルド環境
PHP のバージョンに合った Visual Studio が必要
◦ https://wiki.php.net/internals/windows/compiler
2014/01/27 第 98 回 PHP 勉強会 4
Visual Studio 2015
Community Edition で大丈夫
◦ https://www.visualstudio.com/downloads/download-visual-studio-vs
2014/01/27 第 98 回 PHP 勉強会 5
VS2015 のインストール
「カスタム」を選択して C++ をチェック
2014/01/27 第 98 回 PHP 勉強会 6
ダウンロード(その1)
PHP のソースコード
◦ http://windows.php.net/download/
2014/01/27 第 98 回 PHP 勉強会 7
ダウンロード(その2)
ビルド用のツールと依存ライブラリ
◦ http://windows.php.net/downloads/php-sdk/
2014/01/27 第 98 回 PHP 勉強会 8
ビルド用フォルダの作成
公式ウェブサイトに書いてあるとおり
◦ https://wiki.php.net/internals/windows/stepbystepbuild
◦ 詳細は省略
2014/01/27 第 98 回 PHP 勉強会 9
ビルド用フォルダの完成図
こんな感じのフォルダ構成になれば OK
2014/01/27 第 98 回 PHP 勉強会 10
コマンドプロンプトの起動
「VS2015 用 MSBuild のコマンド プロンプト」を起動
◦ スタートメニューに項目ができているはず
◦ 上の方の項目「Developer Command ...」「MSBuild Command ...」は
◦ 英語版の言語パックを追加したら増えた
◦ 使わないので気にしなくて OK
2014/01/27 第 98 回 PHP 勉強会 11
64 bit ツールセット有効化
最初に VC¥vcvarsall.bat amd64 を実行する
◦ これを忘れると 32 ビット版の PHP が作られる
C:¥Program Files (x86)¥Microsoft Visual Studio 14.0>cd VC
C:¥Program Files (x86)¥Microsoft Visual Studio 14.0¥VC>vcvarsall.bat amd64
C:¥Program Files (x86)¥Microsoft Visual Studio 14.0¥VC>
◦ Microsoft のウェブサイトに情報があります
◦ 64 ビットの Visual C++ ツールセットをコマンドラインから有効にする
◦ https://msdn.microsoft.com/ja-jp/library/x4d2c09s.aspx
2014/01/27 第 98 回 PHP 勉強会 12
ビルドの準備
公式ウェブサイトに書いてあるとおり
◦ https://wiki.php.net/internals/windows/stepbystepbuild
C:¥Program Files (x86)¥Microsoft Visual Studio 14.0>cd ¥php-sdk
C:¥php-sdk>bin¥phpsdk_setvars.bat
C:¥php-sdk>cd phpdev¥vc14¥x64¥php-7.0.2-src
C:¥php-sdk¥phpdev¥vc14¥x64¥php-7.0.2-src>buildconf
Rebuilding configure.js
Now run 'configure --help'
C:¥php-sdk¥phpdev¥vc14¥x64¥php-7.0.2-src>
2014/01/27 第 98 回 PHP 勉強会 13
Configure オプション
公式ウェブサイトの説明では・・・
◦ --disable-all !!!
◦ いくらなんでもあんまりだ
そこで今回はオプション無しで作ってみます
C:¥php-sdk¥phpdev¥vc14¥x64¥php-7.0.2-src>configure.bat
...
C:¥php-sdk¥phpdev¥vc14¥x64¥php-7.0.2-src>
2014/01/27 第 98 回 PHP 勉強会 14
ビルドの実行
nmake コマンドでビルドする
C:¥php-sdk¥phpdev¥vc14¥x64¥php-7.0.2-src>nmake
...
ext¥calendar¥jewish.c(346): error C2001: 定数が 2 行目に続いています。
ext¥calendar¥jewish.c(347): error C2001: 定数が 2 行目に続いています。
ext¥calendar¥jewish.c(365): error C2001: 定数が 2 行目に続いています。
ext¥calendar¥jewish.c(366): error C2001: 定数が 2 行目に続いています。
ext¥calendar¥jewish.c(368): error C2001: 定数が 2 行目に続いています。
...
NMAKE : fatal error U1077: '"C:¥Program Files (x86)¥Microsoft Visual
Studio 14.0¥VC¥BIN¥amd64¥cl.exe"' : リターン コード '0x2'
Stop.
C:¥php-sdk¥phpdev¥vc14¥x64¥php-7.0.2-src>
◦ ビルドエラー
2014/01/27 第 98 回 PHP 勉強会 15
jewish.c の修正
@yoya さんのブログに解決方法が書かれていました
◦ http://d.hatena.ne.jp/yoya/20130210/php
◦ ソースコードにヘブライ語が直接書かれているのでエスケープする
2014/01/27 第 98 回 PHP 勉強会 16
あらためてビルド実行
今度は無事に成功
C:¥php-sdk¥phpdev¥vc14¥x64¥php-7.0.2-src>nmake
...
C:¥php-sdk¥phpdev¥vc14¥x64¥php-7.0.2-src>nmake snap
...
C:¥php-sdk¥phpdev¥vc14¥x64¥php-7.0.2-src>
◦ nmake snap でファイル一式を zip にまとめてくれる
2014/01/27 第 98 回 PHP 勉強会 17
完成
php-7.0.2-Win32-VC14-x64.zip が生成される
2014/01/27 第 98 回 PHP 勉強会 18
ビルドした PHP を使う
適当に展開して実行する
C:¥Users¥Uchiyama>cd C:¥Users¥Uchiyama¥Desktop¥php-7.0.2-Win32-VC14-x64
C:¥Users¥Uchiyama¥Desktop¥php-7.0.2-Win32-VC14-x64>php -v
PHP 7.0.2 (cli) (built: Jan 26 2016 23:39:28) ( ZTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
C:¥Users¥Uchiyama¥Desktop¥php-7.0.2-Win32-VC14-x64>
2014/01/27 第 98 回 PHP 勉強会 19

Contenu connexe

Tendances

Tendances (20)

Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜Node.js Native ESM への道  〜最終章: Babel / TypeScript Modules との闘い〜
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
 
「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例
「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例
「電車でGO!!」アーケード大型3画面筐体で実在の街並みを表現するUE4開発事例
 
Ready Player MeのアバターをVRMにする(動画と一緒に見てください)。
Ready Player MeのアバターをVRMにする(動画と一緒に見てください)。Ready Player MeのアバターをVRMにする(動画と一緒に見てください)。
Ready Player MeのアバターをVRMにする(動画と一緒に見てください)。
 
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 (  Redmine of one plant 2022 ...
ある工場の Redmine 2022 〜ある工場の Redmine 5.0 バージョンアップ〜 ( Redmine of one plant 2022 ...
 
JIT のコードを読んでみた
JIT のコードを読んでみたJIT のコードを読んでみた
JIT のコードを読んでみた
 
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
モバイルオンラインゲームでの大規模観戦とチート対策 〜自社製リアルタイム通信システム「WSNet2」の事例〜
 
プリント基板をレイアウトして発注してみようの会 Vol0
プリント基板をレイアウトして発注してみようの会 Vol0プリント基板をレイアウトして発注してみようの会 Vol0
プリント基板をレイアウトして発注してみようの会 Vol0
 
OSCによるソフトウェア連携
OSCによるソフトウェア連携�OSCによるソフトウェア連携�
OSCによるソフトウェア連携
 
Editor スクリプティング 入門
Editor スクリプティング 入門Editor スクリプティング 入門
Editor スクリプティング 入門
 
Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合
Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合
Cocos2d-xの深層 Cocos2d-x組み込みによるピュアAndroid/iOSアプリの外科手術的統合
 
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
 
Hands On OpenCV! 画像処理ライブラリを使って面白いプログラムを作ろう!
Hands On OpenCV! 画像処理ライブラリを使って面白いプログラムを作ろう!Hands On OpenCV! 画像処理ライブラリを使って面白いプログラムを作ろう!
Hands On OpenCV! 画像処理ライブラリを使って面白いプログラムを作ろう!
 
Unityエディタ拡張でノードベースでシンセサイザーを作ってみた
Unityエディタ拡張でノードベースでシンセサイザーを作ってみたUnityエディタ拡張でノードベースでシンセサイザーを作ってみた
Unityエディタ拡張でノードベースでシンセサイザーを作ってみた
 
ServiceとRepository
ServiceとRepositoryServiceとRepository
ServiceとRepository
 
第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89
第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89
第二世代MDD(萌え駆動開発)によるプログラミングWin32 #CLRH89
 
ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版
 
書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト書こう! 使おう! 単体テスト
書こう! 使おう! 単体テスト
 
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
 
【Unite 2017 Tokyo】スマートフォンでどこまでできる?3Dゲームをぐりぐり動かすテクニック講座
【Unite 2017 Tokyo】スマートフォンでどこまでできる?3Dゲームをぐりぐり動かすテクニック講座【Unite 2017 Tokyo】スマートフォンでどこまでできる?3Dゲームをぐりぐり動かすテクニック講座
【Unite 2017 Tokyo】スマートフォンでどこまでできる?3Dゲームをぐりぐり動かすテクニック講座
 
ゲームボーイ向けOSの作り方
ゲームボーイ向けOSの作り方ゲームボーイ向けOSの作り方
ゲームボーイ向けOSの作り方
 

Similaire à Windows で PHP をビルドしてみた

まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
Hideharu MATSUFUJI
 
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~
Fujio Kojima
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
Masanori Oobayashi
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
Takeshi Komiya
 

Similaire à Windows で PHP をビルドしてみた (20)

anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件anyenv + phpenv + php-build が便利すぎる件
anyenv + phpenv + php-build が便利すぎる件
 
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
 
Word bench7月号
Word bench7月号Word bench7月号
Word bench7月号
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
SharePoint Framework Extension 基礎講座
SharePoint Framework Extension 基礎講座SharePoint Framework Extension 基礎講座
SharePoint Framework Extension 基礎講座
 
Hyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理するHyper-V を Windows PowerShell から管理する
Hyper-V を Windows PowerShell から管理する
 
.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~.NET 5 勉強会 ~.NET Framework から .NET へ~
.NET 5 勉強会 ~.NET Framework から .NET へ~
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
microPCFを使ってみよう
microPCFを使ってみようmicroPCFを使ってみよう
microPCFを使ってみよう
 
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
 
PHPの今とこれから2020
PHPの今とこれから2020PHPの今とこれから2020
PHPの今とこれから2020
 
PHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見るPHP で実行中のスクリプトの動作を下から覗き見る
PHP で実行中のスクリプトの動作を下から覗き見る
 
Tdd vim
Tdd vimTdd vim
Tdd vim
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes3分間 開発環境クッキング 2012.07 #pyfes
3分間 開発環境クッキング 2012.07 #pyfes
 
Houdini 製品概要
Houdini 製品概要 Houdini 製品概要
Houdini 製品概要
 
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
 
Windows Server 2016上でLinuxコンテナが動いた!
Windows Server 2016上でLinuxコンテナが動いた!Windows Server 2016上でLinuxコンテナが動いた!
Windows Server 2016上でLinuxコンテナが動いた!
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET する
 

Plus de y-uti

Plus de y-uti (20)

潜在ディリクレ配分法
潜在ディリクレ配分法潜在ディリクレ配分法
潜在ディリクレ配分法
 
Active Object
Active ObjectActive Object
Active Object
 
目で見る過学習と正則化
目で見る過学習と正則化目で見る過学習と正則化
目で見る過学習と正則化
 
ロジスティック回帰入門
ロジスティック回帰入門ロジスティック回帰入門
ロジスティック回帰入門
 
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
論文紹介 Identifying Implementation Bugs in Machine Learning based Image Classifi...
 
PECL operator で演算子オーバーロード
PECL operator で演算子オーバーロードPECL operator で演算子オーバーロード
PECL operator で演算子オーバーロード
 
PHP-ML で手書き数字認識
PHP-ML で手書き数字認識PHP-ML で手書き数字認識
PHP-ML で手書き数字認識
 
OPcache の最適化器の今
OPcache の最適化器の今OPcache の最適化器の今
OPcache の最適化器の今
 
スパース推定
スパース推定スパース推定
スパース推定
 
Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話
 
PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告PHP カンファレンス福岡 2017 参加報告
PHP カンファレンス福岡 2017 参加報告
 
分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用分類問題 - 機械学習ライブラリ scikit-learn の活用
分類問題 - 機械学習ライブラリ scikit-learn の活用
 
JIT for PHP を試した
JIT for PHP を試したJIT for PHP を試した
JIT for PHP を試した
 
Task Spooler を試した
Task Spooler を試したTask Spooler を試した
Task Spooler を試した
 
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
 
RFC: "var" Deprecation
RFC: "var" DeprecationRFC: "var" Deprecation
RFC: "var" Deprecation
 
最近の PHP の話
最近の PHP の話最近の PHP の話
最近の PHP の話
 
PECL を数えてみた
PECL を数えてみたPECL を数えてみた
PECL を数えてみた
 
逐次ベイズ学習 - サンプリング近似法の場合 -
逐次ベイズ学習 - サンプリング近似法の場合 -逐次ベイズ学習 - サンプリング近似法の場合 -
逐次ベイズ学習 - サンプリング近似法の場合 -
 
各言語の k-means 比較
各言語の k-means 比較各言語の k-means 比較
各言語の k-means 比較
 

Windows で PHP をビルドしてみた