ケメ堂note (てがろぐtest)

お知らせ・長文・なんか用 (デザイン仕様よく変わります)

投稿フォーム

管理用ページ / 下書きリスト / 管理画面

No.83

【まとめ】MacのMAMPでPHPは動くのにCGI/SSIが動かないときの解決方法(from ChatGPT)
てがろぐのスキンデザインを作るのにローカルでCGIを動かそうと、MacでCGIやPHPを動かすには「MAMP」が便利という情報をもとに設置を試みたところ、PHPはネットの情報のおかげで作動に成功!(なお設置までにかかった日数)

しかしCGI/SSIはMac特有の情報の少なさで解決策が見つからず途方に暮れまくったのですが、ChatGPTに相談してみたら解決したという。(経緯は>>81。)

「最後にこのやりとりをまとめて文章でまとめてくれ」と指示したので、このまとめの文章も、90%ぐらいはChatGPTくんが作ってくれました。

ちなみにぼくはプログラム系についてはズブズブのドドドドド素人なので、PHPとかCGIとかSSIとかPerlとか言われてもよくわかりませんし質問されても全くわからないので悪しからず…(そういうカテゴリーかな?ぐらいの認識)




✅ 1. MacのMAMPでCGIを動かす方法
(>>82に、ここに至るまでの細かいやり取りがあります)

🔧 必要なもの
・MAMP(公式サイトからインストール)
・CGIスクリプト(たとえば .cgi や .pl)


🧭 手順
① 任意のフォルダにCGIスクリプトを配置
例:
/Applications/MAMP/htdocs/test01/test.cgi
ぼくは「test.cgi」という簡単なテスト用cgiを用意して挑みました。


② ターミナルで実行権限を与える(重要)
例:
chmod 755 /Applications/MAMP/htdocs/test01/test.cgi
置いてあるcgiに合わせてファイル名は変えてくださいね。


③ Apache の設定を変更
MAMP の Apache 設定ファイルを開く:
/Applications/MAMP/conf/apache/httpd.conf

👇 このモジュールを有効化(コメントアウト「#」を外す)
LoadModule cgid_module modules/mod_cgid.so

👇 htdocs ディレクトリの <Directory> 設定を修正:
<Directory "/Applications/MAMP/htdocs">
    Options +ExecCGI
    AllowOverride All
    Require all granted
</Directory>


👇 cgi-script を登録(必要なら):
AddHandler cgi-script .cgi .pl


④ Apacheを再起動
MAMPで「Stop」→「Start」で再起動。
・うっかりわすれがち💦


⑤ cgiスクリプト先頭の shebang を確認
#!/usr/bin/env perl

⑥ Content-Type ヘッダーも忘れずに!
print "Content-type: text/html\n\n";【←これはいらん】
これも提示されたけどぼくの場合はこれはいらんかった




✅ 2. MacのMAMPでSSI(Server Side Includes)を動かす方法
💡 SSIとは?
HTMLファイル内に CGI や他の HTML を組み込む仕組み。
<!--#include virtual="..." --> のような書き方をする。

🧭 手順
① SSI を使う .shtml ファイルを作る
例:demo.shtml
中身は各々でご準備ください。

② Apache 設定を変更(httpd.conf)
📍以下を <Directory "/Applications/MAMP/htdocs"> に追加:
Options +ExecCGI +Includes
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
AddDefaultCharset UTF-8


上記の「MacのMAMPでCGIを動かす方法」と合わせて、実際にぼくが設定したコードはこれです。
<Directory "/Applications/MAMP/htdocs">
    Options +ExecCGI +Includes
    AllowOverride All
    Require all granted

    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
   AddDefaultCharset UTF-8

    <IfModule xsendfile_module>
        XSendFilePath "/Applications/MAMP/htdocs"
    </IfModule>
</Directory>


👇必要なモジュールが有効になっているか確認
LoadModule include_module modules/mod_include.so
コメントアウト(#を外す)するのを忘れずに


③ Apacheを再起動
MAMPで「Stop」→「Start」で再起動。
・重ねて言うけどうっかりわすれがち💦💦


④ SSI の記述例
✅ CGI の実行(SSIから)
<!--#include virtual="test01/test.cgi" -->
 ✅ virtual="パス" は「相対パス」が安定
 ❌「/test01/...」ではなく ⭕️「 test01/...」
ファイル名の先頭に"/"はいらない

実は、ぼくは「/test01/...」で質問したことについて、ChatGPTくんはこのファイル名の違いを指摘はしなかったので、この箇所の問題は唯一、ChatGPTでは解決しませんでした(行き詰まりかと思われたがにより自力で解決しました)


✅ CGI 側に Content-Type が必要!
#!/usr/bin/env perl
print "Content-type: text/html\n\n";
これも提示されたけどぼくの場合はこれはいらんかった



⑤ .shtml ファイルにアクセス
例:
localhost/test01/demo.shtml

(゚д゚)ウマー
できた…!動いたよ!ChatGPTくん!!!!

📝 補足Tips
CGI 実行権限…………………………………………………chmod 755
shebang……………………………………………#!/usr/bin/env perl
SSI ファイル拡張子………………………………………   .shtml 推奨
CGI 実行結果が表示されない…………Content-Type ヘッダーを確認
SSI でうまく動かない……………………virtual のパスを相対にする
再起動忘れ注意………………Apacheを変更後は必ずMAMPを再起動




ChatGPTくん:必要であればこの内容を .md ファイルにしてダウンロードできる形でもお渡しできます!

ぼく:.md ファイルもらっとこうかな?
ぼく:Obsidianで使います、ありがとう😊

ChatGPTくん:Obsidianなら .md ファイルをそのまま放り込めば即使えるので便利ですよね。リンクやコードブロックもバッチリ表示されるはずです。
また何かあればいつでも聞いてください〜!良きObsidianライフを✍️✨

ChatGPTって中に人いるよね…????

■お知らせ:

デザイン試行錯誤中なので表示がおかしかったりします。ご了承ください。

■カレンダー

2025年7月
sunmontuewedthufrisat
12345
6789101112
13141516171819
20212223242526
2728293031

■新着画像リスト:

■全文検索:

ギャラリーモード /// 画像一覧モード

ケメ堂noteTOP /// ケメ堂本舗 / kemedo.kirara.stへ戻る

arrow_upward arrow_downward