Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
phpのビルドにつかれた ので phpenv+homebrew
uzulla
March 27, 2020
Programming
1
650
phpのビルドにつかれた ので phpenv+homebrew
2020/03/27 @ PHPerKaigi Online (仮)#1
uzulla
uzulla
March 27, 2020
Tweet
Share
More Decks by uzulla
See All by uzulla
即、New Relic / New Relic NOW!
uzulla
0
510
近況PHP / PHP in now a days
uzulla
4
2.5k
NewRelicと戦うレガシーPHP
uzulla
0
410
PHPバージョンアップけもの道
uzulla
28
9.5k
プロファイル結果の可視化三本勝負 in PHP
uzulla
1
960
リモートワーク改善していきたいよね
uzulla
14
11k
レンサバけもの道
uzulla
2
2.3k
レンサバでねっとりとしたプアマンズ継続的デプロイ
uzulla
1
3.6k
帰ってきた!平成最後のオレオレフレームワークの作り方
uzulla
6
6.7k
Other Decks in Programming
See All in Programming
量子コンピュータ時代のプログラミングセミナー / 20230119_Amplify_seminar _shift_optimization
fixstars
0
190
jq at the Shortcuts
cockscomb
1
430
Ruby Pattern Matching
bkuhlmann
0
610
42tokyo-born2beroot-review
love42
0
110
和暦を正しく扱うための暦の話
nagise
10
6.5k
Azure Functionsをサクッと開発、サクッとデプロイ/vscodeconf2023-baba
nina01
1
340
AWSにおける標的型Bot対策
hacomono
0
420
tidy_rpart
bk_18
0
600
データドリブンな組織の不正検知
fkubota
0
270
Showkase、Paparazziを用いたビジュアルリグレッションテストの導入にチャレンジした話 / MoT TechTalk #15
mot_techtalk
0
120
Hatena Engineer Seminar #23「新卒研修で気軽に『ありがとう』を伝え合える Slack アプリを開発した話」
slashnephy
0
350
なぜRubyコミュニティにコミットするのか?
luccafort
0
310
Featured
See All Featured
Infographics Made Easy
chrislema
235
17k
Why You Should Never Use an ORM
jnunemaker
PRO
49
7.9k
GitHub's CSS Performance
jonrohan
1020
430k
Building Adaptive Systems
keathley
27
1.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
22
43k
Designing Experiences People Love
moore
130
22k
For a Future-Friendly Web
brad_frost
166
7.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
643
54k
A better future with KSS
kneath
230
16k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
13
1.1k
Unsuck your backbone
ammeep
659
56k
Building Your Own Lightsaber
phodgson
96
4.9k
Transcript
phpͷϏϧυʹ͔ͭΕͨ phpenv+homebrew ☞ uzulla ☞ શࣗۀରԠܕਓࡐ ☞ 2020/03/27 @ PHPerKaigi
Online ʢԾʣ#1
લఏ ☞ PHPωΠςΟϒ͕࠷ߴͩΑͶʢݸਓతͳײʣ ☞ ߴͩ͠ɺ৭ʑखΛೖΕ͍͢͠ ☞ Ͱɺmysqldocker͕࠷ߴʂ ☞ ੲMysql͕Μ͚ͬͯͨͲͶ… ☞
https://gist.github.com/uzulla/6028743
Ͱ·͋ɺSystem PHP͔ͭΘ ͳ͍ΑͶ ☞ mojaveͰ7.1.33
ఆ൪phpenv+php-build $ phpenv install 7.0.0 $ cd some/proj/ $ phpenv
local 7.0.0 $ php -v php 7.0.0 ☞ ωΠςΠϒPHPer ఆ൪ͷπʔϧ ☞ ࣗanyenv͔ΒͷphpenvͰ͢ ☞ ʢnodenvͱ͔rbenvͱ͔͍ΔͷͰʣ
͔͠͠php-buildͭΒ͍ ☞ ۙϏϧυΛ௨͢ͷʹࠒͷ܇࿅͕ඞཁɺਏ͍ ☞ XcodeΞϓσͷͨͼʹ͖͑Δ/usr/include ☞ OpenSSLʢLibre SSLʣɺlibxmlɺlib...lib...devel.... ☞ libΛHomeBrewͰ͍ΕΔʹͯ͠ΊΜͲ͏
(libͷΞϓσͰͿͬյΕΔ) ☞ vi definitions/hoge ͩΔ͍…
HomeBrewͰPHP͍ΕΕ͍͍ΑͶ $ brew install php $ brew install
[email protected]
☞
YES! no build. no dep hell !!!
࣮ମ͜͜ʹ͋Δ $ ls -al /usr/local/Cellar/ |grep php drwxr-xr-x 3 uzulla
staff 96 3 10 13:30 php drwxr-xr-x 3 uzulla staff 96 10 16 21:43
[email protected]
drwxr-xr-x 3 uzulla staff 96 10 16 21:43
[email protected]
/usr/local/Cellar/php/7.4.3$ ls INSTALL_RECEIPT.json LICENSE NEWS README.md bin composer homebrew.mxcl.php.plist include
lib pecl sbin share /usr/local/Cellar/php/7.4.3$ bin/php -v PHP 7.4.3 (cli) (built: Feb 20 2020 12:23:37) ( NTS )
Ͱόʔδϣϯࢦఆ͍͓ͨ͠… ☞ ຖճ /usr/local/Cellar/php/7.4.3/bin/php ͱ͔ࢦఆͯ͠ΒΕͳ͍Ͱ͠ΐ ☞ phpenv͔͓ͭ͏ʁ ☞ php-buildϙΠʂ
phpenv with brew's php $ ln -s /usr/local/Cellar/php/7.4.3 ~/.phpenv/versions/7.4.3 $
phpenv local 7.4.3 $ php -v PHP 7.4.3 (cli) (built: Feb 20 2020 12:23:37) ( NTS ) ☞ That's all !! ☞ ԶଵଦͳಲͰ͢!!
ΓΖΜ ☞ phpenv/versionsҎԼʹɺ--prefix=hogeͳײ͡ͰϏϧυͨ͠ PHPΛࢦఆͰ͖Δ(SymlinkͰྑ͠) ☞ ln -s x.x.x ~/.phpenv/versions/brew ͱ͔Ͱok
☞ $ ln -s 7.4.3 ~/.phpenv/versions/7.4 $ phpenv local 7.4 ͷ΄͏͕ʢޙʑͷखؒΛߟ͑Δͱʣྑ͍͔ ☞ ʢࢲphp-buildࠞࡏ͍ͯ͠ΔͷͰɺbrew7.4.3ͱ͔ʣ
ϙΠϯτ ☞ ln -s͠͠Γ͢ඞཁ͕͋Δ ☞ brew upgradeͰ͖͑ͨΓ͢ΔͷͰ ☞ ϝϯςόʔδϣϯ্͕͕ͬͨΓ͢Δͱ ☞
brewͷpackage໊͕࠷৽൛phpɺલ
[email protected]
Ͱඍົ͍ ☞ ·͋ɺյΕΕؾͮ͘͠ɺ͖͋ΒΊ·͠ΐ͏ ☞ ຖճϏϧυ͢ΔΑΓϚγʂ
☞ ಉ࣌ʹɺCellerͷதͷ php.iniফ͑Δ ☞ ΞϓϦͰಈతʹini_set͢Δ ☞ πʔϧͰͻͱखؒݮΒ͢ github/uzulla/setmyphpini.php ʮphp setmyphpini.php
Λ࣮ߦ͢Δ͜ͱͰɺ࣮ߦͨ͠PHP ͷPHP_CONFIG_FILE_SCAN_DIRʢconf.dʣͷதʹ my_php.iniϑΝΠϧΛίϐʔ͠·͢ɻʯ
C֦ு(ext)Ͳ͏͢Δͷʁ $ brew install pkg-config imagemagick $ phpenv version 7.4.3
(set by ... $ pecl imagick ☞ ·͋ɺී௨ʹpeclͰ͍Ε·͢ɻphpenv͕ͪΌΜͱೖΕ͍ͨphp ʹ͍ͯΔ͔ݟ͔ͯΒͬͯͶ ☞ phpenvͷ͓͔͛Ͱpeclͱ͔phpizephpenv local/global͠ ͨͷʹPath͕ͱ͓͍ͬͯΔͣͰ͢ɺศརʂ
☞ ·ɺBrewͷPHPʮେମʯೖ͍ͬͯΔ͚ͲͶ pear, bcmath, calendar, dba, dtrace, exif, ftp, fpm,
intl, mbregex, mbstring, mysqlnd, opcache-file, pcntl, phpdbg, phpdbg-webhelper, shmop, soap, sockets, sysvmsg, sysvsem, sysvshm, wddx, zip, apxs2, bz2, curl, fpm-user, fpm-group, freetype-dir, gd, gettext, gmp, iconv, icu-dir, jpeg-dir, kerberos, layout, ldap, ldap-sasl, libxml-dir, libedit, libzip, mhash, mysql-sock, mysqli, ndbm, openssl, password-argon2, pdo-dblib, pdo-mysql, pdo-odbc, pdo-pgsql, pdo- sqlite, pgsql, pic, png-dir, pspell, sodium, sqlite3, tidy, unixODBC, webp-dir, xmlrpc, xsl, zlib ☞ imagickͱ͔ɺimagickͱ͔ͳ͍Ͷ…
Apache͕͓͖ʁ ☞ ApacheΛ͍ΕͯɺCGIͰ͏͔͢͝ͱָͰ͠ΐ͏ ScriptAlias /php-bin/ /home/uzulla/.phpenv/versions/7.4.3/bin/ <Directory /home/uzulla/.phpenv/versions/7.4.3/bin/> Options ExecCGI
Require all granted </Directory> Action php-script /php-bin/php-cgi <FilesMatch \.php$> SetHandler php-script </FilesMatch>
☞ ͋·Γʹ໘ͩͱࢥ͏ͷͰɺ࡞ͷ͜Ε͕͋Γ·͢ ☞ github/uzulla/apachehere ☞ ʮ͖ͳσΟϨΫτϦͰapachehereͱλΠϓ͢Δͱɺͦ͜ ΛDocumentRootͱͯ͠Apache্ཱ͕͕ͪΓ·͢ʯ ☞ ʮphpenv͕ΠϯετʔϧࡁΈͳΒɺͦͪΒͷphpΛ͔ͭ ͍·͢ɻphpenvͷlocalࢦఆө͞Ε·͢ʯ
CGI͓ݏ͍ʁ ☞ brew͜ͷΜʹso͕͋Γ·͢ɺҎԼུɻ Cellar/php/7.4.3/lib/httpd/modules/libphp7.so ☞ apachehereΛ͏߹ ~/.phpenv/versions/x.x.x/libexec/libphp7.so ʹϑΝΠϧΛ͓͚͓̺ ☞ (php-buildͩͱ͜͜ʹੜ͞ΕΔΜΑ)
Τοnginx? $ which php-fpm /Users/uzulla/.anyenv/envs/phpenv/shims/php-fpm /usr/local/Cellar/php/7.4.3/sbin$ ls php-fpm ☞ ͪΖΜphp-fpmBrewͷphpʹ͋ΔΑʂ
☞ ·͋ɺԶ(ϩʔΧϧ։ൃڥͰ)nginx͔ͭͬͯͳ͍͚ͲͶʂ
Brewʹແ͍ɺݹͷPHPʁ ☞ ͍·php(7.4),
[email protected]
,
[email protected]
͕͋ΔɺͦΕΑΓੲͷແ͍ ☞ ݹ͍Fomulatap͢Εಈ͘…༁Ͱͳ͍ɺૉʹೖΒͳ͍ɻ ☞ ೦Ͱ͕͢Ϗϧυ͠·͠ΐ͏ʢݸਓతײʣ ☞
phpenv install 5.3.3 ☞ welcome back to dep hell !!
ʮLD_LIBͿͬյΕΔͷϚδͿͬࡴ͢Ϛϯʯͷࢲ৴ ☞ ʢΘ͔Βͳ͍ͻͱ͖ʹ͠ͳͯ͘Α͍ʣ ☞ brew͕Ξϓσͬͯ͘͠͞ɺ ਅ৺ࠐΊͯͭͬͨ͘όΠφϦ͕ͿͬյΕΔ→ΩϨͦ͏ ☞ Disk͕߽ͳਓHOMEBREW_NO_INSTALL_CLEANUPࢦఆΑ͍ ☞ Ϗϧυ࣌ʹɺ͍͍ͪͪࡉ͔͘CellerҎԼͷPATHࢦఆඞཁ
͕ͩ…
☞ ελςΟοΫϏϧυ͍ͨ͠ͳʙʙɺ ͰPHPͰελςΟοΫϏϧυݬͳͷ༗໊Ͱ͢Ͷʁ ☞ ldd phpͯ͠ɺͰͯ͘ΔsoΛશ෦͔͖͋ͭΊͯͲ͔ͬʹ์Γࠐ ΜͰɺLD_LIBRARY_PATH௨͢ͱ͍͏ςΫ ☞ ʢͱ͍͑ɺϦιʔεϑΝΠϧ…ʁʣ
fin ☞ ωΠςΟϒ࠷ߴʂ ☞ ʮ࠷৽൛Ͱ͍͍ͳΒʯBrewΛ׆༻͢Δͱָ͘͢͝Ͱ͢ɻ ☞ ࢲତམ͠·ͨ͠ɻ ☞ ಉ͡ςΫLinux(Brew)ͰͰ͖·͢ ʢ͕ɺ͋ͬͪͦΜͳϏϧυͰࢮͳͳ͍ͳʣ
☞ ຊ൪ڥͰ͑ΔςΫͰ͕͢ɺૉʹaptָ͕Ͱ͢()