XAMPP を Mac にインストール

以下は Mac OSX 環境への XAMPP(XAMPP for OS X)のインストール方法と基本的な使い方についての覚書です。

XAMPP は無償で使える MariaDB、PHP、および Perl を含んだ Apache ディストリビューションで簡単にローカル環境を構築することができます。

MariaDB は MySQL から派生したデータベースで利用出来るコマンドはほぼ同じです。

Mac OSX 環境に簡単にローカル環境を構築するには他に MAMP を使うこともできます。

関連ページ:MAMP のインストールと初期設定

XAMPP の Mac 版には、XAMPP for OS X と XAMPP-VM が配布されています。

XAMPP for OS X は /Applications/XAMPP フォルダに直接 XAMPP をインストールしますが、XAMPP-VM は Mac 上に Linux 仮想マシン(VM)を構成してインストールします。

以下は、XAMPP for OS X についての説明です。

作成日:2020年4月13日

XAMPP のダウンロード

XAMPP のダウンロードページ(https://www.apachefriends.org/download.html)に Mac 版のリストがあります。

XAMPP for OS X と XAMPP-VM(VM 版)の複数のバージョンが表示されています。サイズの軽いほうが XAMPP for OS X になります。

ファイル名は例えば、xampp-osx-7.4.4-0-installer.dmg のように最後が -installer.dmg となっています(VM 版の方は 最後が -vm.dmg となっています)。

使用したいバージョンのダウンロードボタン Download (64bit) をクリックするとファイルをダウンロードすることができます。

XAMPP のインストール

ダウンロードしたインストーラのファイル(例:xampp-osx-7.4.4-0-installer.dmg)をダブルクリックすると以下が表示されるので、XAMPP.app をダブルクリックします。

以下が表示されるので「開く」をクリックします。

パスワードを求められるので入力して「OK」をクリックします。

「Next」をクリックします。

インストールするコンポーネントの選択画面が表示されるので、特に理由がなければデフォルトのまま「Next」をクリックします。

/Applications/XAMPP フォルダにインストールされると表示されるので「Next」をクリックします。

以下の画面が表示されます。「Learn more about Bitnami for XAMPP」にチェックが入っているとその説明が表示されるので、チェックを外して「Next」をクリックします。

XAMPP のインストール開始の確認画面が表示されるので、「Next」をクリックするとインストールが開始されます。

インストールには少なくとも数分はかかります。

しばらくするとインストールが完了して以下のような表示になります。

「Launch XAMPP」にチェックが入っている状態で「Finish」をクリックすると XAMPP が起動します。

Manage Servers のタブをクリックすると、Apache や MySQL を停止したり起動することができます。

また、インストールが完了するとアプリケーションフォルダ(Applications)には XAMPP のフォルダが作成されています。

XAMPP フォルダの中は以下のようになっていて、XAMPP の起動(manager-osx.app)のショートカットなどが入っています。

  • manager-osx.app のエイリアス:ダブルクリックすると XAMPP を起動します
  • bin や htdocs などのエイリアス:それぞれのフォルダへのショートカット
  • xamppfiles フォルダ:実際の bin や htdocs などのフォルダが格納されているフォルダ
  • uninstall.app:XAMPP の削除に使うアンインストーラー

xamppfiles フォルダの中には以下のようになっています。

XAMPP の使い方

LaunchPad の「XAMPP(その他)」というフォルダの manager-osx や /Applications/XAMPP/manager-osx.app または /Applications/XAMPP/xamppfiles/manager-osx.app をダブルクリックすることで XAMPP を起動することができます。

XAMPP を起動すると Application Manager が開きます。

右下の「Go to Application」をクリックすると、ブラウザが起動して XAMPP のダッシュボード(http://localhost/dashboard/)が開きます。

右上の「PHP Info」をクリックすると、PHP Info のページが開くので システムや Apache、PHP、MySQL(Maria DB)の各種情報を確認することができます。

「phpMyAdmin」をクリックすると phpMyAdmin が開きます。

但し、まだ MySQL Database(Maria DB)を起動していない場合は、以下のように接続エラーのページが表示されます。

Apache や MySQL の開始・終了

Apache や MySQL の開始や終了、再起動は Application Manager の Manage Servers タブで行います。「MySQL Database」や「Apache Web Server」を選択して、「Start」や「Stop」、「Restart」をクリックします。

「Start All」や「Stop All」、「Restart All」をクリックすれば全てをまとめて行えます。

設定

Application Manager の Manage Servers タブで項目を選択して Configure を押すとそれぞれの設定用のウィンドウが開きます。

MySQL Database

MySQL Database を選択して Configure を押すと以下のようなウィンドウが開きます。

「Open Conf File」をクリックすると MySQL の設定ファイル /Applications/XAMPP/xamppfiles/etc/my.cnf を開くことができます。また、ポートを設定することができます。

Apache Web Server

Apache Web Server を選択して Configure を押すと以下のようなウィンドウが開きます。

Open Conf File をクリックすると Apache の設定ファイル /Applications/XAMPP/xamppfiles/etc/httpd.conf を開くことができます。

また、アクセスやエラーログファイルを開いたり、ポートの設定をすることができます。

Server Events

Server Events タブではそれぞれのサービスの起動や終了のログを確認できます。

バーチャルホストの設定

例えば、ローカル環境(MAMP や XAMPP)で htdocs に example と言うフォルダを配置してブラウザでアクセスする場合、通常 http://localhost/example/ と言う URL になります。

これを http://example.localhost/ と言う URL でアクセスできるようにするにはバーチャルホストと言う機能を利用します。

Virtual hosts の有効化

バーチャルホストを利用するには httpd.conf ファイルを編集して Virtual hosts の機能を有効化する必要があります。

XAMPP の場合、/Applications/XAMPP/xamppfiles/etc/httpd.conf にファイルがあるので httpd.conf をテキストエディターで開いて編集します。または「Apache Web Server」の「Open Conf File 」をクリックしても httpd.conf を開くことができます。

デフォルトでは、おそらく以下のように Virtual hosts の次の行の Include ... がコメントアウトされているので、その場合はコメントアウトを外します。

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

以下のように変更して(httpd-vhosts.conf を読み込むようにして)保存します。

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

httpd-vhosts.conf の編集

上記で読み込みを有効にした httpd-vhosts.conf をテキストエディターで開いて編集します。

httpd-vhosts.conf は /Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf にあります。

ファイルを開くと最後の方に以下のようなバーチャルホストの設定サンプルが記載されています。

# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/Applications/XAMPP/xamppfiles/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Applications/XAMPP/xamppfiles/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

バーチャルホストの設定 <VirtualHost *:80>〜</VirtualHost> は複数設定することができます。

設定項目は、少なくとも DocumentRoot と ServerName は指定する必要があります。

  • DocumentRoot:サイトのディレクトリのパス
  • ServerName:ローカル環境でアクセスしたいホスト名(URL)

また、以下の例の場合 *:80 としてあるのでポート 80 を指定してある必要があります(Apache Web Server)。

以下は追加例です(URL を http://example.localhost/ でアクセスできるようにする場合)。

<VirtualHost *:80>
    DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/example"
    ServerName example.localhost
</VirtualHost>

ドキュメントルートを変更している場合など環境によっては、<Directory> ディレクティブを使った以下のような記述の追加が必要かも知れません。

<Directory "/path/to/directory"> #上記と同じパス
  order deny,allow
  allow from ALL
</Directory>

hosts ファイルの編集

hosts ファイルを編集してホスト名と IP アドレスをマッピングします。

hosts ファイルは隠しファイルになっているので、Shift + Command + . を押して表示させることができます。

ファイルの場所は /private/etc/hosts になります。

private
└── etc
    └── hosts

Finder での hosts ファイルの場所のスクリーンショット

hosts ファイルを開くと初期状態ではおそらく以下のようになっていると思います。

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1	localhost
255.255.255.255	broadcasthost
::1             localhost

このファイルにホストを追加します。

テキストエディタで編集

テキストエディタで編集するには、一度デスクトップなどにファイルをコピーして編集します。IP アドレス(127.0.0.1)とホスト名を追加します。

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1	localhost
255.255.255.255	broadcasthost
::1             localhost
127.0.0.1	example.localhost
127.0.0.1	foo.localhost #必要なだけ追加します

元の位置に戻して上書きします。

ファイルを上書きする際には以下のようなメッセージが表示されるので「認証」をクリックします。

etc にあるファイルを上書きする際に表示される警告のスクリーンショット

続いて以下が表示されるので「置き換える」をクリックし、パスワードの入力を求められるので入力します。

hosts ファイルを上書きする際の警告のスクリーンショット

ターミナルで編集

ターミナルを起動して sudo vi /private/etc/hosts と入力して enter を押すとパスワードを求められるので入力すると hosts ファイルが開きます。

i を押して INSERT モードにして矢印キーを使ってカーソルを一番下の右端まで移動し、改行して IP アドレスとホスト名を追加します。

IP アドレスとホスト名の間は tab キーを押すと適当なスペースが入力されます。

hosts ファイルを上書きする際の警告のスクリーンショット

追加したら、esc キーを押して INSERT モードを終了し :wq と入力後 enter を押して保存します。

関連ページ:vim の基本的な使い方

Apache を再起動

Apache の設定ファイルを変更しらた、Application Manager の Manage Servers タブで Apache を再起動(Restart)します。設定した URL にアクセスできるようになっているかを確認します。

ターミナルから Apache を再起動することもできます。コマンドラインから Apache を制御するには apachectl コマンドを使用します。

XAMPP の場合、Apache のコマンドは /Applications/XAMPP/xamppfiles/bin/ に保存されています。

以下は XAMPP の Apache を再起動する例です。

sudo /Applications/XAMPP/xamppfiles/bin/apachectl restart
Password: # パスワードを入力

関連項目:Apache のコマンド(MAMP のインストールと初期設定)

Error 403 / Access Forbidden

以下は今回 Mac に XAMPP(7.4.4)をインストールして使用した際に発生した問題とその解決策です。

特定のディレクトリで 403 エラーが発生してページを表示することができない現象が発生しました。ページへアクセスすると以下のように表示されてしまいます。

Access forbidden!

要求されたディレクトリへのアクセス権限がありません。 インデックスドキュメントが存在しないか、 ディレクトリの読み込みが許可されていません。

サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。

Error 403

localhost

Apache/2.4.41 (Unix) OpenSSL/1.1.1e PHP/7.4.4 mod_perl/2.0.8-dev Perl/v5.16.3

また、WordPress をインストールする際に「wp-config.php ファイルに書き込みできません」という現象も発生しました。

上記に関しては wp-config.php を手動で作成して WordPress をインストールすることはできましたが、アップデートやプラグインをインストールしようとすると以下のような FTP 情報入力画面が表示されてしまいました。

要求されたアクションを実行するには、wordpress が web サーバーにアクセスする必要があります。 次に進むには ftp のアクセス情報を入力してください。

アクセス権限の問題のようなので chmod コマンドでパーミッションの変更をしたり、chown コマンドでファイルの所有者を変更してみましたが現象は変わりませんでした。

解決策

httpd.conf の以下の User daemon(10行目)の daemon の部分を自分(Mac のユーザ名)に変更することで、上記の問題が全て解決しました。但し、これが正しい解決方法かどうかは定かではありません。

また、これにより次項のエラーが発生しました。

/Applications/XAMPP/xamppfiles/etc/httpd.conf
<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User daemon
Group daemon
</IfModule>   

ユーザ名が foo であれば10行目を以下のように変更します。

<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User foo 
Group daemon
</IfModule>   

以下が参考にさせていただいたサイトです。

MacOS XAMPP Access Forbidden Error 403 - You don't have permission to access the requested directory

phpMyAdmin エラー

おそらく上記の変更により、今度は phpMyAdmin で以下のエラーが発生。

$cfg['TempDir'] (/Applications/XAMPP/xamppfiles/phpmyadmin/tmp/) にアクセスできません。phpMyAdmin はテンプレートをキャッシュすることができないため、低速になります。

ls コマンドで確認すると以下のようになっていました。

ls -al /Applications/XAMPP/xamppfiles/phpmyadmin/tmp
total 0
drwxrwxr-x    3 root    daemon    96  4 13 14:33 .
drwxrwxr-x  118 root    admin   3776  4 13 16:29 ..
drwxr-x---   24 daemon  daemon   768  4 13 14:33 twig

前項のエラーの対処で daemon を foo に変更したのが原因の可能性があるので、chown コマンドで phpmyadmin/tmp/twig のオーナーを Mac ユーザ(この例の場合は foo)に変更したらエラーが解消されました。こちらもこの方法が正しい解決方法かどうかは定かではありません。

sudo chown foo /Applications/XAMPP/xamppfiles/phpmyadmin/tmp/twig
ls -al /Applications/XAMPP/xamppfiles/phpmyadmin/tmp
total 0
drwxrwxr-x    3 root    daemon    96  4 13 14:33 .
drwxrwxr-x  118 root    admin   3776  4 13 16:29 ..
drwxr-x---   24 foo     daemon   768  4 13 14:33 twig  #変更