私事ですが
いままで
株式会社シーブレインを8月末で退職しました。
これから
BASE株式会社に9月1日付で入社しました。
お世話になりました皆様にお礼申し上げます。
お会いした際はまたお話できるとうれしいです。
広告:本ブログで紹介している書籍等商品の紹介でAmazonアソシエイトを利用していることがあります。
私事ですが
株式会社シーブレインを8月末で退職しました。
BASE株式会社に9月1日付で入社しました。
お世話になりました皆様にお礼申し上げます。
お会いした際はまたお話できるとうれしいです。
とりあえず現状を載せておきます。
brew upgrade
を実行したら、php-buildでインストールしたphpの実行に失敗するようになりました。
php-buildは最新版であることを確認して、(コミットハッシュ: e2969a6
) install.sh
を実行しました。
結論としては CXXFLAGS='-std=c++11'
を追加してビルドすると、php
が実行できるようになりました。
Fix default temporary directory for php-build on macOS by hnw · Pull Request #467 · php-build/php-build でこの問題が修正され、ビルド時に環境変数CXXFLAGS='-std=c++11'
を指定しなくてもよくなりました。PHP5.3.29もビルドできるようになりました。
php
のパスを設定$ php -v dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib Referenced from: /Users/tenkoma/local/php/7.1.8/bin/php Reason: image not found Abort trap: 6
$ ghq look php-build cd /Users/tenkoma/src/github.com/php-build/php-build bash-3.2$ time YACC=$(brew --prefix bison)/bin/bison PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j7 php-build -i development 7.1.8 ~/local/php/7.1.8/ [Info]: Loaded extension plugin [Info]: Loaded apc Plugin. [Info]: Loaded composer Plugin. [Info]: Loaded github Plugin. [Info]: Loaded uprofiler Plugin. [Info]: Loaded xdebug Plugin. [Info]: Loaded xhprof Plugin. [Info]: Loaded zendopcache Plugin. [Info]: php.ini-development gets used as php.ini [Info]: Building 7.1.8 into /Users/tenkoma/local/php/7.1.8/ [Downloading]: https://secure.php.net/distributions/php-7.1.8.tar.bz2 [Preparing]: /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/7.1.8 ^@[Compiling]: /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/7.1.8 ^@^@ ----------------- | BUILD ERROR | ----------------- Here are the last 10 lines from the log: ----------------------------------------- ^ _Nullable /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/signal.h:106:48: note: insert '_Nonnull' if the pointer should never be null int sigvec(int, struct sigvec *, struct sigvec *); ^ _Nonnull 352 warnings generated. 352 warnings generated. 352 warnings generated. 331 warnings generated. ----------------------------------------- The full Log is available at '/tmp/php-build.7.1.8.20170814220930.log'. [Warn]: Aborting build. real 3m15.342s user 6m5.609s sys 1m21.761s
下の、「libjpegのエラーについては、ビルドしなおせば、上記のエラーは発生しなくなります」も確認ください。 解決策情報をいただきました。
はじめまして。同じ症状でブログにたどり着きましたので情報共有を。
— 田口 誠 Makoto Taguchi (@petty_conan) 2017年8月15日
YACC=$(brew --prefix bison)/bin/bison CXXFLAGS='-std=c++11' phpenv install 7.1.8
で私の環境ではビルドできました。
jpeg に関しては brew upgrade で 9b が入ってくるのですが、PHPがサポートするのは 8 までのようなので、ダウングレードする必要がありそうです。https://t.co/fT2HLDbwRl
— 田口 誠 Makoto Taguchi (@petty_conan) 2017年8月15日
php-build のエラーログを見るとわかりますが、c++11 サポートが必要とのことで、フラグをつける必要がありました。
— 田口 誠 Makoto Taguchi (@petty_conan) 2017年8月15日
詳しく追っていませんが、Xcodeのコンパイラ(Apple LLVM)のバージョンに依存すると思われます。
やってみます。まず、libjpeg のバージョンを切り替え
$ brew info libjpeg jpeg: stable 9b (bottled) Image manipulation library http://www.ijg.org /usr/local/Cellar/jpeg/8d (19 files, 708.3KB) Poured from bottle on 2016-11-19 at 12:49:23 /usr/local/Cellar/jpeg/9b (20 files, 724KB) * Poured from bottle on 2017-08-14 at 00:35:36 From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/jpeg.rb $ brew switch libjpeg 8d Cleaning /usr/local/Cellar/jpeg/8d Cleaning /usr/local/Cellar/jpeg/9b 17 links created for /usr/local/Cellar/jpeg/8d
次に CXXFLAGS
を指定してビルド
$ ghq look php-build cd /Users/tenkoma/src/github.com/php-build/php-build bash-3.2$ time YACC=$(brew --prefix bison)/bin/bison CXXFLAGS='-std=c++11' PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j7 php-build -i development 7.1.8 ~/local/php/7.1.8/ [Info]: Loaded extension plugin [Info]: Loaded apc Plugin. [Info]: Loaded composer Plugin. [Info]: Loaded github Plugin. [Info]: Loaded uprofiler Plugin. [Info]: Loaded xdebug Plugin. [Info]: Loaded xhprof Plugin. [Info]: Loaded zendopcache Plugin. [Info]: php.ini-development gets used as php.ini [Info]: Building 7.1.8 into /Users/tenkoma/local/php/7.1.8/ [Downloading]: https://secure.php.net/distributions/php-7.1.8.tar.bz2 [Preparing]: /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/7.1.8 ^@[Compiling]: /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/7.1.8 ^@^@^@^@[xdebug]: Installing version 2.5.5 [xdebug]: Compiling xdebug in /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/xdebug-2.5.5 [xdebug]: Cleaning up. [Info]: Enabling Opcache... [Info]: Done [Info]: The Log File is not empty, but the Build did not fail. Maybe just warnings got logged. You can review the log in /tmp/php-build.7.1.8.20170816011335.log [Success]: Built 7.1.8 successfully. real 6m12.645s user 16m37.504s sys 5m20.081s bash-3.2$ php -v PHP 7.1.8 (cli) (built: Aug 16 2017 01:18:24) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.1.8, Copyright (c) 1999-2017, by Zend Technologies with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans
ビルド時刻が更新されているので、ビルド成功です。
さらに情報をいただきました。ありがとうございます。
php-build の件で追加情報です。jpeg ですが、9b でもビルドできました。ただしGDの動作まで確認した訳ではなく、php -i で
— 田口 誠 Makoto Taguchi (@petty_conan) 2017年8月17日
JPEG Support => enabled
libJPEG Version => 9 compatible
の表記を確認した程度です
先述の通り、PHP公式ドキュメントがまだアップデートされていないので、どう捉えるか、ではあると思います。
— 田口 誠 Makoto Taguchi (@petty_conan) 2017年8月17日
libjpeg に関してまとめると、phpenv 等を使用している場合は brew upgrade で 9b にアップデートされてしまうとビルド済みバイナリが動かなくなるので、8に戻すか過去のバイナリもビルドし直す必要がある、ということになります。
— 田口 誠 Makoto Taguchi (@petty_conan) 2017年8月17日
以上、ご報告まで。
libjpeg を元に戻してビルドし直しました。
$ brew switch libjpeg 9b Cleaning /usr/local/Cellar/jpeg/8d Cleaning /usr/local/Cellar/jpeg/9b 17 links created for /usr/local/Cellar/jpeg/9b $ ghq look php-build $ time YACC=$(brew --prefix bison)/bin/bison CXXFLAGS='-std=c++11' PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j7 php-build -i development 7.1.8 ~/local/php/7.1.8/ $ ~/local/php/7.1.8/bin/php -i | grep JPEG Supported filetypes => JPEG,TIFF JPEG Support => enabled libJPEG Version => 9 compatible
いただいた情報の通り、 php
実行できました。
5.4.45, 5.5.38, 5.6.31, 7.0.22, 7.1.8, 7.2beta2 までビルド成功しました。5.3.29では以下の通りビルド失敗しました。
$ time YACC=$(brew --prefix bison)/bin/bison CXXFLAGS='-std=c++11' PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j7 php-build -i development 5.3.29 ~/local/php/5.3.29/ [Info]: Loaded extension plugin [Info]: Loaded apc Plugin. [Info]: Loaded composer Plugin. [Info]: Loaded github Plugin. [Info]: Loaded uprofiler Plugin. [Info]: Loaded xdebug Plugin. [Info]: Loaded xhprof Plugin. [Info]: Loaded zendopcache Plugin. [Info]: php.ini-development gets used as php.ini [Info]: Building 5.3.29 into /Users/tenkoma/local/php/5.3.29/ [Downloading]: https://secure.php.net/distributions/php-5.3.29.tar.bz2 [Info]: Applying patches: /usr/local/bin/../share/php-build/patches/php-5.3.29-64bit-intl.patch [Preparing]: /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/5.3.29 [Compiling]: /var/folders/pc/vq2zc_sn05v190vzzvz99bpc0000gn/T//php-build/source/5.3.29 ^@ ----------------- | BUILD ERROR | ----------------- Here are the last 10 lines from the log: ----------------------------------------- ^ _Nullable /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdio.h:475:6: note: insert '_Nonnull' if the pointer should never be null FILE *funopen(const void *, ^ _Nonnull 330 warnings generated. 330 warnings generated. 330 warnings generated. 331 warnings generated. ----------------------------------------- The full Log is available at '/tmp/php-build.5.3.29.20170818191216.log'. [Warn]: Aborting build. real 2m24.479s user 3m19.952s sys 1m30.081s
今後5.3を使う必要に迫られない限り、放置でいこうかと思います。
8月8日、株式会社メルカリ 東京支社オフィスで開催されたPHP BLT #8 に参加してLTしました。
CircleCI 2.0 で CakePHP3 アプリのビルド // Speaker Deck
見てくださるかたの反応を見ながら話すのが苦手です…
あと、LTでコードを見せて理解してもらうのは困難、という学びがありました。
ワークフロー機能が実装される前は、副ジョブのAPIをcurlで叩く、というやり方だったので(参考: CircleCI 2.0 でNode.jsのマルチバージョンビルド - teppeis blog)、CircleCI に「お前は何を言ってるんだ」と言いたくなりましたが、ワークフロー機能は便利です。
2017年6月10日に福岡で開催されたPHPカンファレンス福岡2017に行ってきました。
関西は2回ほど行ってますが福岡は初参加でした。
前日入りしてFusicさんに初訪問して雑談したりコード書いたりしてましたが後で述べます。
途中から参加。早口すぎてわからないところが多かったのですが、LTは勢いが大事、ということで… クイズを支える技術についてはY8 2017 spring in Shibuya懇親会で聴いてました。
スポンサードセッション3つのうちの1つでした。私はこれ1つだけ聴いて、あとはスポンサーブースを回ったのですが(すみません!)題目だけ見るとまったく宣伝くさくないですね。開発ノウハウの共有自体が最高の宣伝ということなのでしょう。
「Action Domain Responder」という用語自体知らなかったので参加
スライド未アップロードのようですが、Lumen/Laravel Action-Domain-Responder(ADR)アプローチ - Qiitaにyuuki takezawaさんの資料がありました。
CakePHPでコードを書いていると、Controllerのコードが太りやすくなったり、ビューロジック(Responseの操作)が混ざったりするので、分けられないかな〜と思うことはあるので、後ほどチェックしたいと思います。
少し前にツール自体試してないのにプルリクを送ったことがあり、興味があったので参加しました。
小規模なプロジェクトが数多くある現場だとSaaSのエラートラッキングツールは選びにくいので、そういった現場では非常に有用ですね! S3にログを蓄積していて、WEBUIを使った場合、それをHTTPで取得しているので、検索機能は実装しにくい(もしAmazon Athenaを使うとなると金が発生しそう…?)そうですが、GitHub Issueに登録する機能があるので、簡易的な検索はそちらで出来る気がしました。
次の日もFusicさんにお邪魔してfaultlineを実際に試してみることができました。
Progressive Web Apps はHTML5 Conferenceだったかで聴いたことがあり参加。
Progressive Web Apps や Service Worker といった新しめの技術はlocalhost以外でHTTPSが必須となっていて、僕も新規にサイト構築するときはhttps前提に考えているので、HTTPS化をすすめるためにも勉強していきたい。
エラーメッセージってどうかくか、よく迷いますね。 ユーザーにとっての「具体的な解決策」を書くようにしよう!
開催前から注目してたセッション。 バージョンアップ条件の整理(20ページ)など、バージョンアップ時に注意していることの情報がたくさんで貴重です。 CakePHPコアに直接手を加えている箇所、多いですね…
勉強会・カンファレンスで発表したいけど一歩踏み出せない方に超おすすめLTでした。
ホールから1度出た別の部屋でスポンサーコーナーとAsk The Speakerコーナーがありました。 BaserCMS のブースがあり、要望を書くとくじが引けたのでCakePHP3対応を要望しました(笑)
最近、福岡にはASCII.jp:髙島市長も熱弁!さくら、アカツキ、ピクシブ、メルカリが福岡拠点開所へというニュースもあり、その盛り上がりを見たいというのがあり、初めて参加しました。
カンファレンスの会場はとても快適で、3つあるホール/ルームはすべて座って聴くことができました。前の方の席にテーブルが用意されていてセッション開始後でもすいていたので助かりました。ルームの移動もしやすかったです。
セッション内容も興味のあるものが多く、カンファレンス後もPHPerの皆さんと飲みながら長く話すことができて充実できました。
来年も開催されるなら是非参加したいです。
カンファレンスの前日と翌日、地下鉄天神駅の近くにある株式会社Fusicさんにお邪魔して、雑談したりコード書いたりしてました。
前日は8. 現場の座談会(cakephper / tomzoh / tadsan) | PHPの現場の収録も行われ、生で内容を聞いてました。その後、前夜祭まで少し時間があったので、会場で袋詰めのお手伝いをしました。
翌日は主にfaultlineのハンズオンに参加していて、ちょっとしたバグ修正のPRをその場で送ったりしてました。
こちらやってみました。
php-build
を使うGitHubリポジトリを管理する ghq
はインストール済みとして, まず php-build
をインストールする
$ ghq get php-build/php-build $ ghq look php-build $ ./install.sh $ exit
現在最新の PHP 7.1.6 をビルドしてみる
php-build -i development 7.1.6 ~/local/php/7.1.6
$ ~/local/php/7.1.6/bin/php -v PHP 7.1.6 (cli) (built: Jun 10 2017 16:21:37) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.1.6, Copyright (c) 1999-2017, by Zend Technologies with Xdebug v2.5.4, Copyright (c) 2002-2017, by Derick Rethans
direnv
では cd
した時に .envrc
の内容を実行します。
そのファイルで $PATH
を変更することでディレクトリごとにPHPバージョンの切り替えが実現できます。
path/to/project/.envrc
PATH_add $HOME/local/php/7.1.6/bin
.envrc
を保存したとき、
direnv: error .envrc is blocked. Run `direnv allow` to approve its content.
と怒られる場合は
$ direnv allow
を実行するとdirenvが使えるようになります。 ここまでセットアップすれば以下のように切り替わります。
$ php -v PHP 7.0.19 (cli) (built: May 21 2017 11:56:11) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies $ cd ~/projects/sample_projects/direnv_sample direnv: loading .envrc direnv: export ~PATH $ php -v PHP 7.1.6 (cli) (built: Jun 10 2017 16:21:37) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.1.6, Copyright (c) 1999-2017, by Zend Technologies with Xdebug v2.5.4, Copyright (c) 2002-2017, by Derick Rethans
新しいバージョン定義が追加されていれば、(Pull Requestで更新されてます) git pull
して ./install.sh
すれば新しいバージョンをビルドできます。以下のような感じです。
$ ghq look php-build cd /Users/tenkoma/src/github.com/php-build/php-build bash-3.2$ git pull Already up-to-date. bash-3.2$ ./install.sh Installing php-build in '/usr/local' - creating directories... done. - copying files... done. Done.
2017/5/22 に株式会社メルカリで開催されたPHP BLT #7でLTしてきました。PHP BLT初参加です。
とりあえず参加登録後に過去の発表資料をチェックしたら、ほとんどPHPの話だったので、そういう縛りがあるのかーPHPネタは難しいな、と思ったのですが杞憂でした。 最近取り組んでいるGitLab CI を使った自動化の例として、レビュー環境を自動生成する話の(私が勉強中の)現状について紹介しました。
発表内容は、GItLab CI + Review Appsの簡単な紹介と .gitlab-ci.yml
の設定例です。
CakePHPで自作したデプロイツール(gitリポジトリURLを指定すれば「デプロイ」ボタンを押すだけでレビュー環境が更新される、HTTP認証も設定できるというもの)を運用しているのですが、gitコマンドまわりでバグがあったり、push時に自動でデプロイする機能がまだなく使い勝手がまだまだです。しかし、Review Appsならそのあたりをイイ感じに解決できそう、という感想です。
LT中にでてくる唯一のPHP要素、 .htdigest
ファイルを生成するワンライナーは以下の通りです。
php -r 'printf("%s:%s:%s\n", $argv[1], $argv[2], md5("{$argv[1]}:{$argv[2]}:{$argv[3]}"));' $HTTP_USER "$HTTP_REALM" $HTTP_PASSWORD >> $SRC_PUBLIC_DIR/.htdigest
紹介した設定ファイルのコードは以下で参照できます。
GitLabは使い方を覚えれば、できる自動化が増えていって楽しいですね。