0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[macOS] macOS 版 FileMaker Server で PHP を使う

Last updated at Posted at 2025-02-28

使用環境

Mac mini (M1, 2020)
macOS Sequoia 15.3.1
FileMaker Server 21.1.1.40

テスト環境用に FileMaker Server 兼 Web サーバ にしてしまう

私は、通常 Ubuntu(AMD) 版の FileMaker Server を使用していますが、テスト環境用に、Mac mini (M1, 2020) で、macOS 版も使用しています。
Ubuntu 版の登場で、色々と都合が良くなったりしていますが、macOS 版もまだまだ使っています。

FileMaker Server にした Mac を Web サーバとしても設定したいという要請はあると思いますが、PHP がそのままでは動かない、また、Mac のセキュリティの問題もあって、Ubuntu 版とは少々、違った作業が必要になります。

PHP をインストールしてしまう

FileMaker Server が既にインストールされている前提で、Mac への PHP のインストールは、Homeberew を使うのが簡便でしょう。詳細は Homebrew サイトを参照してもらうとして、最低限度でコマンドだけ書いておきます。

% brew install php

これで最新版の PHP がインストールできます。もし、バージョン選択したい場合は、次のコマンドでインストール可能なバージョンを確認します。

% brew search php

例えば、8.1 をインストールしたいときは、

% brew install php@8.1

以上で、PHP のインストールは完了するので、php -v 等で、存在を確認しておけばいいでしょう。

 ここまでは、なんてことのない作業ですが、Mac の場合、未署名のソフトウェア、この場合、 libphp.so になりますが、そのまま使用することができません。

Command Line Tools for Xcode のインストール

libphp.so にコード署名するためのコマンドが含まれている Command Line Tools for Xcode をインストールします。

% xcode-select --install

 これで、コード署名ができるようになります。

認証局の作成

 自己署名用の証明書を発行する認証局を作成しておくと、Web サーバとして Mac を SSL 化してテストするのに便利ですし、認証局発行の証明書をデフォルトで信頼とすることもできますし、キーチェーンアクセスも見やすくなります。

これには、「キーチェーンアクセス」アプリケーションを使用しますが、macOS Sequoia では、アプリケーションの場所が、/System/Library/CoreServices/Application/ に移動しています。それ以前の場合は、/System/Applications/Utilities/ にあります。

 起動すると、macOS Sonima 以降は、「パスワード」を開くか「キーチェーンアクセス」を開くか聞いてくるので、「キーチェーンアクセス」を選択して開きます。

認証局を作成

 起動したら、左のペインで、ログイン を選んで、キーチェーン > 証明書アシスタント > 認証局作成... を選び、以下のように設定します。

  • 名前: 任意の認証局名(ex. Qiita CA)
  • 固有名のタイプ: 自己証明ルート CA
  • コード署名
  • ✅ デフォルトを無効化
  • ✅ この CA をデフォルトにする
  • メールの送信元: (メールアドレス)

証明書情報

 続ける をクリックし、次のページに進み、以下の設定をします。

  • シリアル番号: 1
  • 有効期間(日数): 任意の日数(ex. 5年なら 1826)
  • (他のチェック項目はチェックしない)

証明書情報(2ページ目)

 続ける をクリックし、次のページに進み、以下の設定をします。

  • メールアドレス: (メールアドレス)
  • 名前: 設定した認証局名
  • 組織: (会社名 ex. Apple inc.)
  • 部署: (部署 ex. iPhone Development Division)
  • 都市(地域): (市区町村 ex. Yokohama)
  • 都道府県/州: (ex. Kanagawa)
  • 国または地域: JP

この CA の鍵ペア情報

続ける をクリックし、次のページに進み、以下の設定をします。

  • 鍵のサイズ: 2048 ビット
  • アルゴリズム RSA

この CA のユーザが使う鍵ペア情報を指定

  • 鍵のサイズ: 2048 ビット
  • アルゴリズム RSA

この CA が使う鍵用途拡張領域

続ける をクリックし、次のページに進み、以下の設定をします。

次の項目にチェックを入れ、他はチェックしない

  • ✅ 鍵用途拡張領域を含める
  • ✅ 署名
  • ✅ 証明書署名

この CA のユーザが使う鍵用途拡張領域

続ける をクリックし、次のページに進み、以下の設定をします。

次の項目にチェックを入れ、他はチェックしない

  • ✅ 鍵用途拡張領域を含める
  • ✅ この拡張領域は重要
  • ✅ 署名

この CA が使う拡張鍵用途拡張領域

続ける をクリックし、次のページに進み、以下の設定をします。

次の項目にチェックを入れ、他はチェックしない

  • ✅ 拡張鍵用途拡張領域を含める
  • ✅ 任意
  • ✅ コード署名

この CA のユーザが使う拡張鍵用途拡張領域

続ける をクリックし、次のページに進み、以下の設定をします。

次の項目にチェックを入れ、他はチェックしない

  • ✅ 拡張鍵用途拡張領域を含める
  • ✅ この拡張領域は重
  • ✅ コード署名

この CA が使う基本制約拡張領域

続ける をクリックし、次のページに進み、以下の設定をします。

次の項目にチェックを入れ、他はチェックしない

  • ✅ 基本制約拡張領域を含める
  • ✅ この証明書を認証局として使用

この CA のユーザが使う基本制約拡張領域

続ける をクリックし、次のページに進み、以下の設定をします。

何もチェックしない

この CA が使うサブジェクト代替名拡張領域

続ける をクリックし、次のページに進み、以下の設定をします。

何もチェックしない

この CA のユーザが使うサブジェクト代替名拡張領域

続ける をクリックし、次のページに進み、以下の設定をします。

次の項目にチェックを入れ、他はチェックしない

  • ✅ サブジェクト代替名拡張領域を含める

証明書の場所を指定

続ける をクリックし、次のページに進み、以下の設定をします。

次の項目にチェックを入れ、他はチェックしない

  • キーチェーン: ログイン
  • ✅ このコンピュータ上ではこの CA に署名された証明書を信頼

作成をクリックして認証局を作成します。

設定結果が表示されたら、確認後、ウィンドウを閉じます。

コード署名の証明書の作成

作成した認証局を使って、証明書を作成します。
キーチェーンアクセス > 証明書アシスタント > 証明書を作成... を選択します。

証明書を作成

  • 名前: (証明書の名前 ex FileMaker Server Admin)
  • 固有名のタイプ: リーフ
  • 証明書のタイプ: コード署名

発行者を選択

続ける をクリックし、次のページに進み、先ほど作った認証局を選択し、作成をクリックします。

 コード署名の準備はこれで完了です。

コード署名する

証明書が出来たので、その証明書を使って署名します。パスは Homebrew 使って PHP をインストールしている場合を想定して書いていますので、適宜、読み替えてください。

尚、この部分の作業はローカルで行う必要があります。リモートでは出来ません。

Apple Silicon 搭載の Mac の場合

codesign --sign "(発行した証明書名)" --force --keychain ~/Library/Keychains/login.keychain-db /opt/homebrew/opt/php/lib/httpd/modules/libphp.so

Intel Mac の場合

codesign --sign "(発行した証明書名)" --force --keychain ~/Library/Keychains/login.keychain-db /usr/local/opt/php/lib/httpd/modules/libphp.so

これでコード署名済みの libphp.so が出来ました。

次のコマンドで確認できます。

Apple Silicon 搭載の Mac の場合

codesign -vd /opt/homebrew/opt/php/lib/httpd/modules/libphp.so

Intel Mac の場合

codesign -vd /usr/local/opt/php/lib/httpd/modules/libphp.so

正しく署名ができていれば、次のような情報が表示されます。

Executable=/opt/homebrew/Cellar/php/8.4.4/lib/httpd/modules/libphp.so
Identifier=libphp
Format=Mach-O thin (arm64)
CodeDirectory v=20400 size=159679 flags=0x0(none) hashes=4985+2 location=embedded
Signature size=3088
Signed Time=Feb 28, 2025 at 11:11:44
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=84

httpd.conf.2.4 の編集

FileMaker Server の Apache の設定は、httpd.conf を編集するのではなく、httpd.conf.2.4 を編集し、FileMaker Server 起動時にそれを読み込ませるという方法が採られています。

まず、デフォルトの httpd.conf.2.4 をバックアップしておきます。

% cd /Library/FileMaker\ Server/HTTPServer/conf/
% cp httpd.conf.2.4 httpd.conf.2.4_default

編集を開始します。ここでは vi を使いますが、お好きなエディタでもちろん構いません。

% vi httpd.conf.2.4

LoadModule の行が沢山あるので、一番下の LoadModule hfs_apple_module /usr/libexec/apache2/mod_hfs_apple.so の次の行にインサートモード(i を打つ)で追加します。

# Added by me (20250228)
LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so "(発行した証明書名)"

パスは、Homebrew でインストールした PHP かつ Apple Silicon の Mac です。Intel Mac の場合は、以下のようになります。

# Added by me (20250228)
LoadModule php_module /usr/local/opt/php/lib/httpd/modules/libphp.so "(発行した証明書名)"

次に、インサートモードを抜けて(esc を打つ)、htdocs で検索します。

/htdocs

以下のように再び、インサートモードで書き換えます。

DocumentRoot "${HTTP_ROOT}/htdocs"
<Directory "${HTTP_ROOT}/htdocs">
    #AllowOverride none
    #Options None
    #Require all granted
    AllowOverride All
    Options Multiviews FollowSymLinks
    MultiviewsMatch Any
    Require all granted
</Directory> 

次に、インサートモードを抜けて、DirectroyIndex で検索します。

/DirectroyIndex

以下のように再び、インサートモードで書き換えます。

<IfModule dir_module>
    #DirectoryIndex index.html
    DirectoryIndex index.html index.php
</IfModule>

次に、インサートモードを抜けて、FilesMatch で検索し、<FilesMatch "\.php$"> を探し、次のように書き換えます。

<FilesMatch "\.php$">
#   Require all denied
    SetHandler application/x-httpd-php
    Require all granted
</FilesMatch>

<FilesMatch "\.phps$">
    SetHandler application/x-httpd-php-source
    Require all granted
</FilesMatch>

続いて、最下行まで移動して、次のようインサートモードで追加します。

# Added by me (20250228)
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

インサートモードを抜けて保存終了します。

:wq

Admin Console での設定

Admin Console で、FileMaker Server マシンが Web サーバとしても機能するように設定しておく必要があります。

コネクタ > Web 公開 > Web 公開エンジン をオンにします。

FileMaker Server の再起動 2回

2回続けて、FileMaker Server を再起動します。

% sudo /Library/FileMaker\ Server/HTTPServer/bin/httpdctl restart
% sudo /Library/FileMaker\ Server/HTTPServer/bin/httpdctl restart

phpinfo() で確認

 phpinfo() を表示させて、PHP が動作しているか確認します。

% cd /Library/FileMaker\ Server/HTTPServer/htdocs/httpsRoot/
% vi phpinfo.php

インサートモードにして、次のコードを入力し、保存終了します。

<?php phpinfo();

 ブラウザで、FileMaker Server の phpinfo.php にアクセスします。

https://(FileMaker Server のドメイン名)/phpinfo.php

phpinfo() の情報が表示されれば成功です。

CGI、SSI、autoindex 等、設定したい項目があれば、同じように httpd.conf.2.4 を編集して設定していくことになります。
小技を python、ruby、node、R 等で作っておいて、FileMaker Server から実行するということも設定次第で可能になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?