Macでxamppを使う

インストールと初期設定

ここらあたりからダウンロードしてインストール。WindowsとLinux、Macとわかれているので、ここではMac版を選びましょう。私は、Mac版の「7.0.9 / PHP 7.0.9」を選んでみました。
xampp_ctrl


デフォルトだと、コンパネみたいなものがここにインストールされているので、起動します。

/Applications/XAMPP/manager-osx.app

起動した後にlocalhostにアクセスしてみて、xamppが起動していたらOKです。
http://localhost/dashboard/
MySQLも起動していたら、こちらにアクセスできます。(ローカル環境ということもあってログイン・ログイアウトがないんですね。)
http://localhost/phpmyadmin/

バーチャルホスト

とはいってもバーチャルホストの設定をしないとどうしようもないので、ホストを幾つか設定します。xamppのhttpd.confを開いて基本的な設定をしてゆきます。

vi /Applications/XAMPP/xamppfiles/etc/httpd.conf

448行目辺りにあるバーチャルホストの部分のコメントを外します。

# Virtual hosts
#Include etc/extra/httpd-vhosts.conf
↓
# Virtual hosts
Include etc/extra/httpd-vhosts.conf

バーチャルホストを設定するファイルを開きます。

vi /Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf

バーチャルホストの設定を適当に。

# example
<VirtualHost *:80>
    ServerAdmin hoge@example.com
    DocumentRoot "/Users/hoge/localhost/example.com/www"
    ServerName example.local
    ErrorLog "logs/example.local-error_log"
    CustomLog "logs/example.local-access_log" common
    <Directory "/Users/hoge/localhost/example.com/www">
        Options Indexes MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Apacheを再起動したら普通に使えるようになる筈です。

Access forbidden! Error 403

ということになるときがあって、なかなか解決しない場合はいくつかの方法を試します。

DocumentRootとhostsの設定がそもそも間違っている
ServerNameとDocumentRootが合っていなくて別のディレクトリを指している場合は、Forbiddenになります。ここらはハマると以外にわからないのでもう一度確認しましょう。
パーミッションがおかしい
まずはDocumentRoot自体のパーミッションを確認します。通常755とか705で動作しますが、ハマったときはとりあえず777とかにしてみましょう。フルパーミッションで動かない場合は別の原因です。
次にMacの[Command]+[i]で情報を開いてその中でもパーミションを確認します。読み書きが両方できるようにしておきます。
それでもダメならたぶんApache2.4系以上の書き方の問題かもです。2.4移行はたぶんrequireでgrant allとかにするとフルパーミションになるかと思います。

最終的にログをみることになりますが、

Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /Users/hoge/localhost/example.com/www

となっていることがあります。この場合は、たぶん(おそらく).htacessにrewriteの処理を入れていると思われるので、.htaccessの先頭で、

Options +FollowSymLinks
(または Options FollowSymLinks)

を書いてやります。たぶんこれで403は解消される筈です。

phpの設定

たいていのモジュールはデフォルトで組み込まれているのですが、いくつか自分で設定しないとダメです。

intl

CakePHP3とか使うとintl extensionだけ入ってないです。php.iniにextension=php_intl.dllがあるのでコメント外して再起動です。

;extension=php_intl.dll
↓
extension=php_intl.dll

時々ですが、この拡張ファイル系を読み込まないときがあります。理由はよくわかりません。

Warning: PHP Startup: Unable to load dynamic library '/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20160303/php_intl.dll

まずは該当のファイルがあるかどうか確認して、フルパスとかで指定してやると治ります。
ない場合は、インストールするしかなさそう。http://qiita.com/Commander-Aipa/items/936c90c60be22441228b

xamppのApacheが起動しない

Macのxamppが起動しない場合はたいていの場合ポートの競合か、Mac標準のApacheがすでに起動してしまっている場合が多いです。ポートの競合はその他のアプリケーション(chromeとか)で起こる場合もあるので、何ともいえないのですが、xamppの方のポートを変えてあげるとその他のアプリには影響ないでしょう。あるいは、Macの方のApacheがポートを専有している場合は、単純に停止してあげればよいだけです。

# su root
# apachectl stop

DocumentRootをGoogleDriveにする

https://tools.google.com/dlpage/drive/index.html?hl=ja
DocumentRootはLocal PCにおいておくのもいいんですが、会社のPCとノートPCと自宅のPCといちいち同期を取るのが非常に面倒なので、GoogleDriveを使うと中途半端にしておいても続きの開発がどこでもできて快適です。

Last update: 2017.06.25 (日)