2024-05-19

 
			macOSに標準で入っているApacheは、後入れの外部モジュールを組み込むことができないという致命的な欠陥がある。たとえばmod_php.soを組み込もうとしても、
[Sun May 19 19:17:40.127443 2024] [so:error] [pid 10778] AH06665: No code signing authority for module at /usr/local/opt/php/lib/httpd/modules/libphp.so specified in LoadModule directive. httpd: Syntax error on line 190 of /private/etc/apache2/httpd.conf: Code signing absent - not loading module at: /usr/local/opt/php/lib/httpd/modules/libphp.so
と言われてエラー終了してしまう。
結局のところは、HomeBrewで入れたものはHomeBrewで入れたものしか連携させられないと見て良いだろう。
よって、PHPも、Apacheも、HomeBrewからインストールしたもの同士であれば連携できる。
HomeBrewでApache2を入れる
まずシステム標準のApacheを止める
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
インストール
brew search apache2 brew install apache2
/usr/local/opt/apache2
/usr/local/etc/httpd
/usr/local/var/log/httpd
に一式が入ったようである。
起動
/usr/local/etc/httpd/httpd.confではListenが8080になっている。
/usr/local/opt/apache2/bin/apachectl configtest Syntax OK /usr/local/opt/apache2/bin/apachectl start cat /usr/local/var/log/httpd/error_log [Sun May 19 19:54:17.489816 2024] [mpm_prefork:notice] [pid 12129] AH00163: Apache/2.4.59 (Unix) configured -- resuming normal operations [Sun May 19 19:54:17.490998 2024] [core:notice] [pid 12129] AH00094: Command line: '/usr/local/opt/httpd/bin/httpd'
ブラウザからhttp://127.0.0.1:8080/と叩いてIt Works!と出ていれば成功。
自動起動設定
brew services start httpd brew services list Name Status User File httpd started hogeuser ~/Library/LaunchAgents/homebrew.mxcl.httpd.plist
自動起動をやめるには
brew services stop httpd
HomeBrewでPHPを入れる
brew install php
php --version
PHP 8.3.7 (cli) (built: May  7 2024 16:35:26) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.7, Copyright (c), by Zend Technologies
httpd.confを修正しPHPモジュール読み込み+自分用設定
バックアップを取ったうえで、修正する。
cd /usr/local/etc/httpd cp -p httpd.conf httpd.conf.default vi httpd.conf
変更点は以下のようにした。インストールしたApache用PHPモジュールを組み込み、拡張子.phpではそれが発動、さらにユーザー・グループは自分に変更、ログやドキュメントルートも自分ホームのwwwフォルダ以下に変更している。
LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so
<ifmodule php_module>
    AddType application/x-httpd-php .php
    PHPIniDir /usr/local/etc/php/8.3
</ifmodule>
User hogeuser
Group admin
DocumentRoot "/Users/hogeuser/www/objs"
<directory>
    Options FollowSymLinks
DirectoryIndex index.html index.php
ErrorLog "/Users/hogeuser/www/logs/error_log"
CustomLog "/Users/hogeuser/www/logs/access_log" common
#使用しないのでコメントアウト
#ScriptAlias /cgi-bin/ "/usr/local/var/www/cgi-bin/"
#<directory>
#    AllowOverride None
#    Options None
#    Require all granted
#</directory>
</directory>
ディレクトリの作成、コンフィグチェック、Apacheの再ロード
cd mkdir www cd www mkdir objs logs sess /usr/local/opt/apache2/bin/apachectl configtest Syntax OK brew services stop httpd brew services start httpd
自分ホームにログが生成されているか確認
cd cd www/logs cat error_log [Sun May 19 21:17:50.761095 2024] [mpm_prefork:notice] [pid 14910] AH00163: Apache/2.4.59 (Unix) PHP/8.3.7 configured -- resuming normal operations [Sun May 19 21:17:50.761772 2024] [core:notice] [pid 14910] AH00094: Command line: '/usr/local/opt/httpd/bin/httpd -D FOREGROUND'
phpinfo.phpを作成しブラウザで表示確認
www/objs/phpinfo.phpを以下のように作成
<?php phpinfo(); ?>
ブラウザからhttp://127.0.0.1:8080/phpinfo.phpと叩いてPHPのインフォメーションページが出れば大成功!
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
Wav2Lipのオープンソース版を改造して外部から呼べるAPI化する
Wav2Lipのオープンソース版で静止画の口元のみを動かして喋らせる
【iOS】アプリアイコン・ロゴ画像の作成・設定方法
オープンソースリップシンクエンジンSadTalkerをAPI化してアプリから呼ぶ【2】
オープンソースリップシンクエンジンSadTalkerをAPI化してアプリから呼ぶ【1】
【Xcode】iPhone is not available because it is unpairedの対処法
【Let's Encrypt】Failed authorization procedure 503の対処法
【Debian】古いバージョンでapt updateしたら404 not foundでエラーになる場合
ファイアウォール内部のWindows11 PCにmacOS Sequoiaからリモートデスクトップする
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
進研ゼミチャレンジタッチをAndroid端末化する
VirtualBoxの仮想マシンをWindows起動時に自動起動し終了時に自動サスペンドする
Windows11のコマンドプロンプトでテキストをコピーする
Androidホームで左にスワイプすると出てくるニュース共を一切表示させない方法
Googleスプレッドシートを編集したら自動で更新日時を入れる
Node.jsからPostgreSQLサーバに接続・操作する
【Apache】サーバーに同時接続可能なクライアント数を調整する
【C++】staticメンバ変数がundefined referenceとエラーになる場合
