ServBayでの第三者PHP拡張のロード方法
ServBayにはユーザーに事前に用意された一般的なPHP拡張モジュールが含まれており、ユーザーはServBayの言語
-PHPバージョン
-拡張
の設定で簡単に有効にすることができます。
しかし、時にはServBayに含まれていないモジュールをロードする必要があることもあります。本記事では、その手順について説明します。
ServBayはユーザーが管理するPHP環境に第三者の拡張を柔軟にロードできるようにしています。本ドキュメントでは、ionCube Loaderを例にとって、プロセス全体を案内します。このプロセスは、他のZend拡張やユーザー自身がコンパイルしたPHP拡張(.so
ファイル)をロードする際にも参考になります。
注意: ionCube LoaderはZend拡張であるため、設定の際にはextension
指令ではなくzend_extension
指令を使用する必要があります。
前提条件
- ServBayがすでにインストールされ、実行中であること。
- 管理者権限を持ち、システムファイルとServBayの設定画面にアクセスできること。
- macOSのターミナル(Terminal)アプリケーションの使用に慣れていること。
注意
ServBayはIntelおよびSilicon(M1/M2/M3/M4)チップに対するネイティブアーキテクチャのPHPパッケージを提供しています。so
ファイルをロードする際は、必ずそのso
ファイルのコンパイルアーキテクチャがServBayのパッケージアーキテクチャと一致していることを確認してください。
異なるアーキテクチャのファイルを混在させることはできません。アーキテクチャの不一致はPHPのクラッシュを引き起こします。
- ServBayに付属のPHPパッケージアーキテクチャを確認します:
file /Applications/ServBay/package/php/8.3/current/bin/php
出力される情報は以下の通りです:
php: Mach-O 64-bit executable arm64 # Silicon Arm64アーキテクチャ
php: Mach-O 64-bit executable x86_64 # Intel x86アーキテクチャ
2
- インストールする
so
ファイルのアーキテクチャを確認します:
file xdebug.so
出力される情報は以下の通りです:
xdebug.so: Mach-O 64-bit bundle arm64 # Silicon Arm64アーキテクチャ
xdebug.so: Mach-O 64-bit bundle x86_64 # Intel x86アーキテクチャ
2
操作手順
手順 1:ionCube Loaderをダウンロード
- ionCube Loaderの公式ダウンロードページにアクセスします。macOS ARM64 (Apple Silicon Mシリーズチップ)の場合、Darwin ARM64バージョンをダウンロードしてください。以下のリンクを直接使用できます(最新バージョンを確認してください): https://downloads.ioncube.com/loader_downloads/ioncube_loaders_dar_arm64.tar.gz
- ダウンロードが完了すると、
.tar.gz
圧縮ファイルが得られます。例:ioncube_loaders_dar_arm64.tar.gz
。
手順 2:対象のPHPバージョンと拡張ディレクトリを特定
ServBayアプリケーションを開きます。
左側のナビゲーションバーでLanguagesをクリックします。
右側のリストからionCube LoaderをインストールしたいPHPバージョン(例:本例ではPHP 8.3)を見つけ、そのバージョン番号をメモします。
ServBayのPHP拡張は通常、特定のパスに格納されます。ServBayの標準インストール構造とスクリーンショットの例に基づいて、PHP 8.3の拡張ディレクトリは次のようになる可能性があります:
/Applications/ServBay/package/php/8.3/8.3.16/lib/php/extensions/no-debug-non-zts-20230831/
/Applications/ServBay/package/php/
はServBay PHPパッケージの基本パスです。8.3/
は主要バージョンディレクトリです。8.3.16/
は具体的なPHPバージョンディレクトリです(実際にインストールしたバージョンに応じて調整してください)。lib/php/extensions/
は拡張ディレクトリの親ディレクトリです。no-debug-non-zts-xxxxxxxx/
は具体的なAPIバージョンおよびコンパイルオプションのディレクトリ(このディレクトリ名はPHPバージョンによって変化します)。
重要: ServBayで実際にインストールされているPHPバージョンとアーキテクチャに基づいて、この正確なパスを特定または見つける必要があります。ターミナルコマンドを使って探すこともできます(ServBayが管理するPHPパスを使用することを確認してください):
bash/Applications/ServBay/package/php/8.3/current/bin/php -i | grep extension_dir
1/Applications/ServBay/package/php/8.3/current/bin/php
を対象PHPバージョンの実際のphp
実行ファイルのパスに置き換えます。コマンドの出力にはextension_dir => /path/to/extension/directory
と表示されます。
手順 3:Loaderファイルの解凍と配置
- ターミナル(Terminal)アプリケーションを開きます。
cd
コマンドを使用して、ダウンロードした.tar.gz
ファイルのディレクトリに移動します(通常はDownloads
ディレクトリです)。bashcd ~/Downloads
1- ダウンロードしたファイルを解凍します:bashこれにより、
tar -zxvf ioncube_loaders_dar_arm64.tar.gz
1ioncube
という名前のディレクトリが作成されます。 ioncube
ディレクトリに移動します:bashcd ioncube
1- このディレクトリ内には、異なるPHPバージョンに対応する
.so
ファイルが見られます。例えば、ioncube_loader_dar_8.3.so
などです。ターゲットPHPバージョン(手順2で特定したバージョン、例:8.3)に一致するファイルを見つけます。 - 一致した
.so
ファイルを手順2で特定したPHP拡張ディレクトリにコピーします。例えば、ターゲットディレクトリが前述の例のパスであり、PHP 8.3用のLoaderをインストールする場合:bashcp ioncube_loader_dar_8.3.so /Applications/ServBay/package/php/8.3/8.3.16/lib/php/extensions/no-debug-non-zts-20230831/
1- ターゲットパスをPHPバージョンの実際の拡張ディレクトリパスに置き換えることを忘れないでください。
- PHPバージョンに完全に一致する
.so
ファイルをコピーしてください。
手順 4:ServBayでPHPを設定
ServBayアプリケーションのインターフェースに戻ります。
左側のLanguagesが選択されていることを確認し、右側のリストで設定したいPHPバージョン(例:PHP 8.3)をクリックします。
右側に展開された設定エリアで、PHPタブをクリックします(下の図の矢印1を参照)。
Additional Parameters(追加パラメータ)テキストボックスを見つけるまでスクロールします。
このテキストボックスに次の行を追加します(下の図の矢印2を参照)、 ionCube Loaderファイルの相対パスを指定します:
inizend_extension = ioncube_loader_dar_8.3.so
1- 再度強調する必要があります:
so
ファイルは必ず手順3で得られたextension_dir
パスに厳密に配置されなければなりません。念のため、確認してください。 - ionCube LoaderはZend拡張であるため、
zend_extension
を使用し、extension
は使用しません。 - このテキストボックスに他の設定がある場合は、新しい行にこの指示を追加してください。
- 再度強調する必要があります:
右下のSaveボタンをクリックして設定を保存します。
手順 5:PHPサービスを再起動
保存ボタンをクリックすると、ServBayは自動的にPHPサービスを再起動しました。
手順 6:ロードが成功したか確認
ionCube Loaderが成功裏にロードされたかを確認する方法は2つあります:
コマンドラインによる確認:
ターミナルを開きます。
次のコマンドを実行します(対象PHPバージョンのフルパスを使用することを確認してください):
bash/Applications/ServBay/package/php/8.3/current/bin/php -m | grep -i ioncube
1成功裏にロードされていれば、
ionCube Loader
のような出力が表示されます。php -v
を実行してバージョン情報を確認することもできます。通常、ionCubeがロードされた後には関連情報が表示されます:bash/Applications/ServBay/package/php/8.3/current/bin/php -v
1出力の例:
PHP 8.3.16 (cli) (built: Jan 31 2025 15:09:39) (NTS) Copyright (c) The PHP Group Zend Engine v4.3.16, Copyright (c) Zend Technologies with the ionCube PHP Loader v14.4.0, Copyright (c) 2002-2024, by ionCube Ltd.
1
2
3
4
phpinfo()による確認:
<?php phpinfo(); ?>
を含むPHPファイル(例:info.php
)を作成し、ウェブサイトのルートディレクトリに配置します。- ブラウザでそのファイルにアクセスします(例:
http://your-local-site.test/info.php
)。 phpinfo()
出力ページで「ionCube」を検索します。成功裏にロードされていれば、ionCube Loaderの情報ブロックが表示され、そのバージョンなどの詳細情報が記載されています。
まとめ
以上の手順に従えば、ServBayが管理する特定のPHPバージョンにionCube Loaderまたは他の第三者PHP拡張を正常にロードできるはずです。重要なのは、正しい拡張ファイルを見つけ、正しいPHP拡張ディレクトリを特定し、ServBayの設定に正しい指示(zend_extension
またはextension
)を追加することです。問題が発生した場合は、パスやファイル権限、PHPサービスの再起動を再確認してください。