Manul Tech

何も考えずにMacOSをCatalinaにアップデートしたら外付けHDDに置いているサイトデータにアクセスできなくなってえらい目にあった。


403 Forbidden

普段はMAMPを使用していて、ノートパソコンなもので内臓HDDの容量も少ないため、サイトデータを外付けHDDに入れてドキュメントルートも当然そこに設定している。
Catalinaにアップデートし、楽しみにしていたサイドカーも調べてみたところ自分のMacもiPadも古くて対応していないとのことで、なんだよと。
まぁ仕事するかと、いつもの象のアイコンをクリックしてmysqlとApacheを起動。制作中のサイトのIPアドレスを叩くと403エラー。あれ、なんで?MAMPを再起動しても403、HDDを挿し直しても403。
最初はパーミッションがおかしくなったのかと思ったけど問題なさそう。ググるとQiitaに一つ、同じ目にあっている人を発見。

この方の場合はポートを変更(localhost → localhost:8888)する事で対応したそう。
でも自分の場合はWordPressの案件が圧倒的に多く、その全てのデータベースの書き換えをするのは現実的ではないのでできれば避けたい。それにURLにポート番号がつかない方がスッキリしてて気持ちいい。
そこから数時間ググりまくるも、海外で同じ内容の記事はいくつか見つかるものの、どれも解決には至っておらず。。

Catalinaで変わったこと

調べているうちにわかったことは、Catalinaではファイルとかフォルダへのアクセス権周りが厳しくなったらしく、どうやらApacheから/Volumes/へのアクセス権がないのではないかということ。
そこで、Macのシステム環境設定の「セキュリティとプライバシー」内の「フルディスクアクセス」にMAMPとMAMP内のapacheを追加してみた。でも403。本当は「ファイルとフォルダ」項目なのかなと思うんだけど、ここの「+」「ー」ボタンはグレーアウトしていて手動での追加/削除はできないみたい。ちなみにMAMPはここに登録されていて、「リムーバブルボリューム」にチェックが入っている。アクセスできないくせに。
数時間あれこれしても解決できず、仕方なくその時制作しているサイトデータは残り少ない内臓HDDにコピーして、そこで作業することにした。残り14GB。。ちなみに外付けHDDのシンボリックリンクを例えばホームディレクトリなどに制作して、そこをドキュメントルートに設定してみたけどダメだった。まぁそりゃそうか。

毎日ググり続ける

そこから数日、合間合間にググり続けてはみたけど、新情報はなし。Stackのポストにも新しいレスもつかず。自分のようにドキュメントルートを外付けHDDにしてる人ってそんなにいないのかな。
少しでも容量を使わないようにiCloud Driveにサイトデータを置いて作業していたんだけど、クラウド上にしかないファイルはgitでは削除扱いになるので、本当は必要なファイルなのにうっかりコミットしてしまうとまずい。クライアントソフトとしてSource Treeを使っているが、ファイルステータス欄に削除されたファイルとしていくつもクラウド上のファイルがリストアップされているがそれは無視しないといけない。ミスりそうで危ない上になんとも気持ちが悪い。内臓HDDの容量残り10GB。。
半分諦めつつ、Qiitaで「MacOS Catalina」とだいぶ広めの検索をかけてみた。ドンピシャなものがなくても、何かヒントになるものがあるかもしれない。すると、こんなポストが。

目的はよくわからなかったポストだけど、「mount」なるコマンドがあることを知った。あまりターミナルでの作業をすることがないのでコマンドのことは詳しくない。なんとなくこのmountコマンドについて調べてみると、このコマンドでマウントポイントの変更などができるらしい。…ん??

閃いた

前述の通り/Volumes以下の外付けHDDでは403エラーが出る。ではマウントする場所を変えて、例えば正常に動作をするホームディレクトリ以下にマウントして、そこをドキュメントルートにしてみたらどうだろうか!!
あれこれ調べて、最終的にはmountコマンドではなく、以下の記事を参考に「diskutil」コマンドでマウントポイントを変更することに。

まずは接続している外付けHDDの情報を見る。

$ df -H

すると、/Volumes/HDDにマウントされているデバイスは/dev/disk3s2だということがわかった。(こういう言い方で合ってるのかわかんないけど)

そして一回アンマウント。

$ diskutil unmount /dev/disk3s2

さらにホームディレクトリに「Web」というディレクトリを作って、そこにマウントしてみる。

$ sudo mkdir ~/Web
sudo diskutil mount -mountPoint ~/Web /dev/disk3s2

再度 df -H で状況を確認してみると、正しく/dev/disk3s2のマウントポイントが/Users/(ユーザー名)/Webになっている。恐る恐るMAMPを起動し、ルートディレクトリを/Users/(ユーザー名)/Webに変更。ブラウザでlocalhostにアクセスしてみると、、、、

アクセスできたーーーー

思惑は大成功!見事アクセスできました!!!
どこにも載っていない(見つけられなかった)状況を自力で解決できたのは嬉しかったし、何よりスッキリした。気づけば朝の4:00。お疲れ様でした。