PHP

macOS built-in PHPを使わないときの代替

なぜか

mcryptやらopensslのextensionがなくてLaravelとか動かないことが多い。
という備忘録です

代替

  1. Vagrant立てる
  2. phpenv, phpbrew系使う
  3. PHPのバイナリ引っ張ってきてそっちにPATH通す

1. Vagrant立てる

たとえばUbuntuのイメージを使って、PHP5.6とか古いの入れてPostgres使うなら

sudo apt-get install -y python-software-properties git zip unzip
sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get update
sudo apt-get install -y php5.6
sudo apt-get install -y php5.6-gd php5.6-mbstring php5.6-pgsql php5.6-mcrypt php5.6-curl php5.6-dom

こういうかんじのprovisioningになるかとおもいます。localeとか他にもいろいろやるけど。
あとcomposer入れることになりそうですね。
composer installで足りないextensionが出てきたら毎回足していますがいつもそういうやり方をしがち。

開発サーバ立てるならPHPのビルトインサーバを使うか、apache2を入れるか。
apache2入れようとするとsynced_folderをVagrant/rsync/nfsどれでやるかにもよると思うんですがpermissionとかでつまづきがちなので私はあんまり使いません。

2. phpenvとか

わたしはやらないのでぐぐってください(anyenvとかdirenv使ったことない)(使ったほうがいい気はしている)

3. PHPのバイナリもってくる

PHP for OSX / macOS as binary package
こっからバイナリドカッと落としてきてPATHを通します。これが一番すき

書かれてるコマンドを実行し終わると /usr/local/php5/bin/php に入ります。
7系でもphp5に入るからなんとなく気持ち悪いけどそういうものです。
それぞれのログインシェルとかでPATHをexportしてbuilt-in PHP( /usr/bin/php )を使わないようにします

export PATH=/usr/local/php5/bin:$PATH

homebrewで brew doctor すると知らんconfigがあるぞという注意が出るようになりますね。別に動くのでいいです。
built-in ApacheでこのPHPを使いたいなら /etc/apache2/httpd.conf あたりを覗いてみてね