XAMPPで htdocs 下に置いたファイルが他のコンピュータから見えなかった件

XAMPPは、便利です。これをひとつインストールするだけで、ApacheMySQLPHPFTPインストーラーでかんたんにインストールできます。
このあいだから、MacでもXAMPPを使ってWEBアプリをいじっていましたが、とくにさしつかえなく使えていました。

ところが今回、 XAMPP インストールフォルダ直下の htdocs (これは実際にはシンボリックリンクですが)に置いたWEBアプリを iPhone6 からアクセスしてみよーと思って試すと、失敗してしまいました。
HTTPエラー、403 (forbidden)。Apacheの承認が拒否されるのでした。

(IPアドレス)/xampp/

これでアクセスしてみたら403のエラーになります。

でも、ローカルPCで(つまりXAMPPを起動しているPCにあるブラウザで)XAMPPのアプリにアクセスする分には問題なくWEBページが表示できます。

localhost/xampp/

その表示されたページに記載された セキュリティ というリンクを開くと、

これらのXAMPPページは一般的にネットワーク経由でアクセス可能です

現在ご覧になっているすべてのXAMPPデモページは、ネットワーク上で一般的にアクセス可能です。あなたのIPアドレスを知っている人は誰でもこれらのページを見ることができます。

なんて書いてあるくらいです(いまはそれを見ることができなくて困っているのに)。

つまり、XAMPPを配布してくれている人たちは、XAMPPのインストールが正常に終わったときには、IPアドレスを知ってさえいればこのPCのウェブページを見ることができると考えているということですね。とくに手で設定ファイルを修正したりすることも必要なく。


気を取り直してXAMPP付属のWEBアプリのメニューから マニュアル へのリンクを開くと、 Apache 2 ドキュメント というのがあります。
そのリンクを開くと Apache HTTP サーバ バージョン 2.4 ドキュメント というページが表示されます。
その リリースノート のセクションには、 2.2 から 2.4 へのアップグレード というリンクがあります。
それを開くと(英語ですが)いろいろと「ここが変わったんだよ〜」的な説明があります。

「あれぇ? エラーだよ。なにが起きたんだか」ということで、Apache のエラーログを見ます。

XAMPPの Mac OS X 版は、Apache等の起動や停止に manager-osx というコントロールツールを使うようになっています。
そのツールの Manage Servers タブで Apache Web Server を選んでから Configure ボタンをクリックすると、 Configure Apache Web Server ダイアログが開くのですが、そこで Open Error Log をクリックすると Apache のエラーログが開きます。
エラーログには、

[authz_core:error]

とかで

AH01630: client denied by server onfiguration: /Applications/XAMPP/xamppfiles/htdocs/xampp/ 

というエラーメッセージが出ていました。

XAMPPのバージョンは XAMPP for Mac OS X 5.6.3-0 です。

エラーメッセージで検索すると、たいていの問題はだいたい片付くので、とりあえず Google 検索してみましたが、同じような問題がみつかったものの、その解決方法がどうもしっくりきません。おなじように対処しようとしてもそこに書かれているファイルがなかったり、試してみても同じ成功の結果がえられなかったり。

「そもそも前にもXAMPPは使っていたけど、 403 になんてならなかったのにな」という疑問がわきました。

その理由は、 Apache が 2.2 系から 2.4 系に変わったためらしいです。で、そのために変更になった Apache の設定があるというので真似してみましたが、設定ファイルを修正して Apache を再起動してからブラウザでアクセスしなおしてみても、同じ403エラーのままでした。

「おかしいなぁ。おかしいなぁ。」といったんは諦めて別のことをはじめてみたりもしました。

で、もういちど向きなおって、 Apache の設定ファイルがどこにあるのか、そのパスを探してみました。

Apache の設定ファイルは httpd.conf という名前のテキストファイルですが、 XAMPP for Mac OS X の場合はこのファイルは /Applications/XAMPP/etc/httpd.conf です。ところが、 etc が xamppfiles/etc へのシンボリックリンクになっているので、その実体は /Applications/XAMPP/xamppfiles/etc/httpd.conf というパスにあります。このファイルの末尾に、次のような記述がありました。

# XAMPP
Include etc/extra/httpd-xampp.conf
Include "/Appliactions/XAMPP/xamppfiles/apache2/conf/httpd.conf"

ここに記された /Appliactions/XAMPP/xamppfiles/apache2/conf/httpd.conf というファイルの内容は、数行のテキストファイルでした。

Alias /bitnami/ "/Applications/XAMPP/xamppfiles/apache2/htdocs/"
Alias /bitnami "/Applications/XAMPP/xamppfiles/apache2/htdocs"

<Directory "/Applications/XAMPP/xamppfiles/apache2/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

これを見ると、 /bitnami というURL( http://localhost/bitnami )という別名(ブラウザで見るときの名前)が定義してあります。で、そのフォルダについての承認は誰に対しても開かれているようです。

でも、それは "/Applications/XAMPP/xamppfiles/apache2/htdocs" についてであって、
"/Applications/XAMPP/xamppfiles/htdocs" についてではないんですね。

ということなので、

(IPアドレス)/bitnami/

というURLを試してみました。

うまく表示されました。

/Applications/XAMPP/htdocs/xxx に置いたWEBページを http://(IPアドレス)/xxx で参照することはできませんでした。
でも
/Applications/XAMPP/xamppfiles/apache2/htdocs/xxx に置いたWEBページを http://(IPアドレス)/bitnami/xxx で参照することはできるということになりそうです。

設定ファイルは変えなくて、WEBアプリのディレクトリの起き場所を変えればよいわけですね。
(「もうちょっと説明がされていてもよかったんじゃないかなぁ」と思わされました。)