読者です 読者をやめる 読者になる 読者になる

ほげほげ(仮)

仮死状態

MacでApache、MySQL、PHPの環境を作る

Mac PHP

環境

  • Mac OS(Mountain Lion)
  • MacBookPro Ratina
  • Homebrewインストール済み

Apacheインストール

$ brew tap Homebrew/dupes
$ brew install httpd

MySQLインストール

$ brew install mysql

セットアップ

$ mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

起動

mysql.server start

rootのパスワード設定

mysqladmin -u root password 'new-password'

phpenvインストール

$ brew tap josegonzalez/php
$ brew install --HEAD phpenv

.zshrcに追記

if [ -f $HOME/.phpenv/bin/phpenv ]; then
    export PATH=$PATH:$HOME/.phpenv/bin
    eval "$(phpenv init -)"
fi

php-buildインストール

$ brew install php-build

PHP5.3.15インストール

Apacheモジュールが生成されるように定義ファイル修正

$ vim /usr/local/share/php-build/default_configure_options

下を追記

--with-apxs2=/usr/local/sbin/apxs


インストール

$ php-build 5.3.15 ~/.phpenv/versions/5.3.15

エラーが出る場合はその都度必要な物をインストール

$ brew install wget
$ brew install re2c
$ brew install jpeg
$ brew install libpng
$ brew install mcrypt


Apacheモジュールを退避

$ mv /usr/local/Cellar/httpd/2.2.22/libexec/libphp5.so ~/.phpenv/versions/5.3.15

Apacheのモジュール切り替えシェル

~/.phpenv/libexec/rbenv-apache-version を作成

#!/usr/bin/env bash
set -e
[ -n "$RBENV_DEBUG" ] && set -x

# Provide rbenv completions
if [ "$1" = "--complete" ]; then
  echo system
  exec rbenv-versions --bare
fi

RBENV_VERSION="$1"
RBENV_ON_FILE="${RBENV_ROOT}/versions"
APACHE_ROOT="/usr/local/Cellar/httpd/2.2.22"
APACHE_MODULE_PATH="${APACHE_ROOT}/libexec"

# Make sure the specified version is installed.

RBENV_PREFIX_PATH="${RBENV_ROOT}/versions/${RBENV_VERSION}"
if [ ! -d "$RBENV_PREFIX_PATH" ]; then
  echo "rbenv: version \`${RBENV_VERSION}' not installed" >&2
  exit 1
fi

PHP_MODULE_PATH="$RBENV_PREFIX_PATH/libphp5.so"

if [ ! -f "$PHP_MODULE_PATH" ]; then
  echo "apache module not found \'${PHP_MODULE_PATH}'" >&2
  exit 1
fi

if [ ! -d "$APACHE_MODULE_PATH" ]; then
  echo "Directory not found \'${APACHE_MODULE_PATH}'" >&2
  exit 1
fi

echo "copy ${PHP_MODULE_PATH} to ${APACHE_MODULE_PATH}"
cp "$PHP_MODULE_PATH" "$APACHE_MODULE_PATH"

echo "Restarting apache..."
sudo apachectl restart

バージョン切り替え

確認

$ phpenv versions

切り替え

$ phpenv global 5.3.15

Apacheモジュール切り替え

$ phpenv apache-version 5.3.15

※うまく反映されない場合

$ phpenv rehash