eureka

Macにphpをインストールして開発環境を整える

0

Larabelでのアプリ開発を考えていて、そもそものところでローカルPCに環境を構築していなかったので(お恥ずかしい)環境構築から始めることに。

環境

現在

macOS Mojave 10.14.6

ソフトウェアバージョン概要
macOSMojave 10.14.6OS
Homebrew2.1.16 Macにソフトウェアを導入するためのパッケージ管理システム。
インターネット上からアプリケーションを簡単にインストールすることができる。

導入予定

ソフトウェアバージョン概要
phpbrew1.23.1PHPのバージョン管理システム
MySQL5.7データベース
Composer1.9.0PHPのパッケージ管理システム

手順

  1. MySQLインストールし起動する
  2. phpbrewをインストールしてパスを通す
  3. PHPインストールに必要なパッケージをインストールする
  4. 指定バージョンのPHPをインストールして切り替える
  5. Composerをインストールする

MySQLインストールし起動する

MySQLはオープンソースのデータベース。もうすでに入っていれば起動しているか確認する。

$ brew install mysql@5.7

servicesコマンドのパッケージをインストールしたら自動起動の設定をしておく。

$ brew tap homebrew/services
$ brew services start mysql@5.7

自動起動したくない場合は個別に起動する。

MySQLのパスの通し方と手動起動はこちらの記事で。
MacでMySQLのパスを通して起動するまで

serviceコマンドとは

serviceコマンドは自動起動するソフトウェアを設定することができる。

下記のコマンドで自動起動している設定の一覧を表示できる。

$ brew services list

phpbrewをインストールしてパスを通す

phpbrewはPHP用のバージョン管理システム。導入により様々なバージョンのPHPをインストールすることができる。

phpbrewをダウンロードする

curlコマンドを使用して指定したURLに含まれるphpbrewをダウンロードする。

$ curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew

phpbrewの実行権限を変える

このままではコマンドを使用しても実行する権限がないので権限を変更する。

$ chmod +x phpbrew

phpbrewのパスを通す

curlコマンドでインストールしたことによりパスの通ったディレクトリに保存されていないため、『パスを通す』ことによりphpbrewのコマンドが使用できるようになる。
正確には全てのディレクトリからコマンドが実行可能な状態にすることを言う。

デフォルトでパスが通っている/usr/local/binディレクトリに移動する。
移動するだけでphpbrewコマンドがどのディレクトリからでも使用できるようになる。

$ mv phpbrew /usr/local/bin/phpbrew

※通常Homebrewでインストールされたソフトウェアは/usr/local/bin/に保存されるためパスが通っている。

ここまでできたらphpbrewコマンドを実行して確認する。

$ phpbrew
  ______ _   _ ____________                   
  | ___ \ | | || ___ \ ___ \                  
  | |_/ / |_| || |_/ / |_/ /_ __ _____      __
  |  __/|  _  ||  __/| ___ \ '__/ _ \ \ /\ / /
  | |   | | | || |   | |_/ / | |  __/\ V  V / 
  \_|   \_| |_/\_|   \____/|_|  \___| \_/\_/  
                                            
Brew your latest php!

SYNOPSIS
	phpbrew [options] <command>

OPTIONS
	-v, --verbose
		Print verbose message.

	-d, --debug
		Print debug message.

	-q, --quiet
		Be quiet.

	-h, --help
		Show help.

	--version
		Show version.

	-p, --profile
		Display timing and memory usage information.

	--log-path=[<value>]
		The path of a log file.

	--no-interact
		Do not ask any interactive question.

	--no-progress
		Do not display progress bar.


COMMANDS
                help    Show help message of a command
                 app    php app store
                init    Initialize phpbrew config file.
               known    List known PHP versions
             install    Install php
                list    List installed PHPs
                 use    Use php, switch version temporarily
              switch    Switch default php version.
                each    Iterate and run a given shell command over all php versions managed by PHPBrew.
              config    Edit your current php.ini in your favorite $EDITOR
                info    Show current php information
                 env    Export environment variables
           extension    List extensions or execute extension subcommands
            variants    List php variants
                path    Show paths of the current PHP.
                  cd    Change to directories
            download    Download php
               clean    Clean up the source directory of a PHP distribution
              update    Update PHP release source file
               ctags    Run ctags at current php source dir for extension development.
                 fpm    fpm commands
            list-ini    List loaded ini config files.
         self-update    Self-update, default to master version
              remove    Remove installed php build.
               purge    Remove installed php version and config files.
                 off    Temporarily go back to the system php
          switch-off    Definitely go back to the system php

TOPICS
                                  contribution    Contribution
                                      cookbook    Cookbook
                                          home    Home
        migrating-from-homebrew-php-to-phpbrew    Migrating from homebrew php to phpbrew
                                    phpbrew-ja    PHPBrew JA 日語指引
                               release-process    Release Process
                                   requirement    Requirement
                      setting-up-configuration    Setting up Configuration
                               troubleshooting    Troubleshooting

HELP
	'phpbrew help' lists available subcommands and some topics. See
	'phpbrew help <command>' or 'phpbrew help <topic>' to read about a
	specific subcommand or phpbrew.

phpbrew 1.23.1		powered by https://github.com/c9s/CLIFramework

phpbrewの設定ファイルを初期化する

設定やインストールを行うための準備としてphpbrewの設定ファイルを初期化する。

$ phpbrew init

bashの設定ファイルに書き込む

ターミナルにログインする度にphpbrewのファイルを読み込むように.bash_profileへ追記して実行する(読み込む)。

$ echo 'source ~/.phpbrew/bashrc' >> ~/.bash_profile
$ source ~/.bash_profile

PHPインストールに必要なパッケージをインストールする

PHPインストールに必要なパッケージをインストールする。インストールするものは下記。

  • autoconf
  • automake
  • libxml2
  • openssl
  • mcrypt
  • mhash
  • readline
  • pcre
$ brew install autoconf automake libxml2 openssl mcrypt mhash readline pcre

これが結構長いので気長に待つことになりそうですな。

指定バージョンのPHPをインストールして切り替える

インストールが可能なPHPのバージョンを表示してインストール

まずはインストールが可能なPHPのバージョンを確認する。

$ phpbrew known
===> Fetching release list...
Downloading https://secure.php.net/releases/index.php?json&version=7&max=100 via curl extension
Downloading https://secure.php.net/releases/index.php?json&version=5&max=100 via curl extension
7.3: 7.3.10, 7.3.9, 7.3.8, 7.3.7, 7.3.6, 7.3.5, 7.3.4, 7.3.3 ...
7.2: 7.2.23, 7.2.22, 7.2.21, 7.2.20, 7.2.19, 7.2.18, 7.2.17, 7.2.16 ...
7.1: 7.1.32, 7.1.31, 7.1.30, 7.1.29, 7.1.28, 7.1.27, 7.1.26, 7.1.25 ...
7.0: 7.0.33, 7.0.32, 7.0.31, 7.0.30, 7.0.29, 7.0.28, 7.0.27, 7.0.26 ...
5.6: 5.6.40, 5.6.39, 5.6.38, 5.6.37, 5.6.36, 5.6.35, 5.6.34, 5.6.33 ...
5.5: 5.5.38, 5.5.37, 5.5.36, 5.5.35, 5.5.34, 5.5.33, 5.5.32, 5.5.31 ...
5.4: 5.4.45, 5.4.44, 5.4.43, 5.4.42, 5.4.41, 5.4.40, 5.4.39, 5.4.38 ...

こんな感じに出たので7.1.21をインストールしてみようかなっと。

$ phpbrew install 7.1.21 +default +mysql
===> phpbrew will now build 7.1.21
===> Loading and resolving variants...
Downloading http://www.php.net/get/php-7.1.21.tar.bz2/from/this/mirror via curl extension
[==================================================================] 177.00/177.00B 100%
Redirecting to https://www.php.net/get/php-7.1.21.tar.bz2/from/this/mirror
Redirecting to https://www.php.net/distributions/php-7.1.21.tar.bz2
[==================================================================] 14.47/14.47MB 100%
===> Extracting /Users/xxxxxx/.phpbrew/distfiles/php-7.1.21.tar.bz2 to /Users/xxxxxx/.phpbrew/build/tmp.1570691957/php-7.1.21
===> Moving /Users/xxxxxx/.phpbrew/build/tmp.1570691957/php-7.1.21 to /Users/xxxxxx/.phpbrew/build/php-7.1.21
===> Checking patches...
Checking patch for replace apache php module name with custom version name
===> Configuring 7.1.21...


Use tail command to see what's going on:
   $ tail -F /Users/xxxxxx/.phpbrew/build/php-7.1.21/build.log


Error: Configure failed:
The last 5 lines in the log file:
checking if the location of ZLIB install directory is defined... no

checking whether to enable bc style precision math functions... yes

checking for BZip2 support... yes

checking for BZip2 in default path... not found

configure: error: Please reinstall the BZip2 distribution

Please checkout the build log file for more details:
	 tail /Users/xxxxxx/.phpbrew/build/php-7.1.21/build.log

ここまで順調だったのにエラーが・・・

ちなみにエラーはこちらの記事にまとめた。
PHPのインストールで怒られた

PHPのバージョンを切り替える

インストールがうまくできたらインストールされているPHPのバージョンを表示して切り替える。

$ phpbrew list
$ phpbrew switch php-7.1.21

ついでにちゃんと切り替わったか確認も。

$ php -v

Composerをインストールする

いよいよここまできたぞ。
ComposerはPHPのパッケージ管理システムで、PHPに必要なパッケージのインストールをするために盛大にお世話になる。

$ brew install composer

うまくインストールできれば下記のコマンドでフィニッシュだーーーーー!

$ composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.9.0 2019-08-02 20:55:32

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display this help message
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi                     Force ANSI output
      --no-ansi                  Disable ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
      --no-plugins               Whether to disable plugins.
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
      --no-cache                 Prevent use of the cache
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

...

最後に

環境構築は依存関係があるのでいつでも本当に大変だ。
それに比べてフロントエンドはブラウザとエディタがあればできちゃうから本当に楽だな()

ここまでできたのでようやくLarabelのプロジェクト、作っていくぞーー!

0