今日も微速転進

ここではないどこかへ

結局PHPに手を出すハメになってしまった……


スポンサーリンク

因果という因縁というか……。

この業界にいると悪名高きPHPからは逃れられないようです。

まあ、断るということもできたんですが、立て続けにPHP案件の紹介が来るとさすがに知人の好意*1はあまり……。

PHPの思い出

学生時代に2回ぐらい赤いマンモスの表紙の本を借りたことがあるんですよ。ところが2回とも1ページも読まずに返却したのが私のPHPとの馴れ初め。

あとはPHPの動いているサーバーのチューニングとか。CakePHP 1.x の頃。
当時はAPCというモジュールをインストールすると1秒あたりに処理できるリクエスト数が倍増したり、なんというかおおおらかな時代でした*2。当時書いたのはphpinfo()関数を呼びだけのファイルでしたけど……。


なんだかんだで月日は流れて、「Rails 使えるならいけますよ」 みたいな軽いノリに押されてPHP(というかCakePHP)のWebアプリのバグ修正を仰せつかったという話。

初めてのPHP

初めてのPHP

  • 作者: David Sklar,桑村潤,廣川類,木下哲也
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2017/03/18
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

PHP 7.x 、従来ひ2倍の速さと素晴らしいじゃないですかと思いつつ、現実はPHP 5.6 ……。現実は非情である、それはそうですよね。

サポート期限来年いっぱいなんですがどうするんだろう。

参考:PHPのリリース日とサポート期限 - Qiita

Homebrew で PHP

Docker とか仮想マシン上でやろうかと思ったけど簡単な修正であればまずはシステム上にインストールしてしまうのが一番楽だった。

先にリポジトリの追加。

$ brew tap homebrew/versions
$ brew tap homebrew/php

これで特定のバージョンのPHPのパッケージをインストールできるようになる。複数バージョンを共存させるツールもあるけどまずは無難に。

PythonとかRubyのことも考慮するならanyenvか。

PHP 5.6.x

$ brew install php56
$ brew install php56-intl

パッケージ名にバージョンを含めることで5.6系をインストールできる。CakePHP 3.x のためにintlモジュール(libicuのラッパー)をインストールしておく。

mac への PHP5.6 のインストール · GitHub

PHP 7.x

共存できないので排他になる。

PHP 7.1.x を利用する場合は、インストール済みのバージョンをアンインストールしてからバージョンに応じたパッケージをインストールする。

$ brew install php71
$ brew install php71-intl

Composer

Ruby on Rails で言うところのbundler。CakePHPのインストールやプラグイン管理に必要。公式の手順に従ってもいいが、Homebrew でパッケージとして提供されているのでこれを使う。

$ brew install  composer

事実上、必須ツール。

CakePHP 3

cakephp.org

Rails に影響を受けたというPHPのWebフレームワーク。

バージョン指定してCakePHPをインストールする

composer のインストールが前提条件。

$ composer create-project --prefer-dist cakephp/app:3.2  myproject

myproject は任意のプロジェクト名に置き換え。

ネタ元:composer php - CakePHP Install Specific Version - Stack Overflow

Docker と CakePHP3

intl というモジュールが必要で、このモジュールはlibicuを要求する。PHP公式のDockerfile の場合、docker-php-ext-install というスクリプトが利用できるので、開発用のlibicu-devパッケージを追加してからPHPモジュール(extension)をインストールすればいい。

PHP公式のDockerfile の適当な箇所に下記を追加。

RUN apt-get update \
  && apt-get install -y libicu-dev && docker-php-ext-install intl

参考:docker-php-ext-install intl fails · Issue #57 · docker-library/php · GitHub

そのほか

PHPメインで開発している会社をDis っていたら結局自分もPHP書くハメに……というか読むハメになった*3という話でした。

……引き寄せの法則の逆みたいな感じですか。

PHP 7.x だと良かったんだけどなあと思いつつ、CakePHP 3のチュートリアルをやる予定です。

チュートリアルと例 - 3.x


それではまた。

*1:悪意という解釈も?

*2:最近はOPcachとかいうらしい

*3:今のところ障害調査なので

広告