paozip for PHP

PHP ソースコードを暗号化して、大切なコードを守るツール

ユーザーズマニュアル


バージョン 2.0.0

2026年2月


有限会社 パオ・アット・オフィス

https://www.pao.ac/


目次

  1. はじめに
  2. 1.1 paozip for PHP とは
  3. 1.2 特長
  4. 1.3 仕組み(透過型暗号化方式)
  5. 1.4 Python版との違い

  6. 動作環境

  7. 2.1 対応 OS
  8. 2.2 対応 PHP バージョン
  9. 2.3 対応サーバー環境
  10. 2.4 対応フレームワーク・CMS
  11. 2.5 レンタルサーバーについて

  12. セットアップ

  13. 3.1 Docker で試す(おすすめ)
  14. 3.2 Linux サーバーにインストール
  15. 3.3 インストールの確認
  16. 3.4 Web サーバーの設定

  17. クイックスタート

  18. 4.1 暗号化してみよう
  19. 4.2 暗号化されたか確認してみよう
  20. 4.3 暗号化ファイルを実行してみよう
  21. 4.4 元に戻してみよう

  22. CLI コマンドリファレンス

  23. 5.1 暗号化(encrypt)
  24. 5.2 復元(restore)
  25. 5.3 一括暗号化
  26. 5.4 コマンド一覧

  27. PHP API リファレンス

  28. 6.1 paozip_encrypt()
  29. 6.2 paozip_decrypt()
  30. 6.3 paozip_seed()
  31. 6.4 paozip_is_licensed()
  32. 6.5 paozip_get_product_info()

  33. 各種環境での利用

  34. 7.1 Laravel
  35. 7.2 WordPress
  36. 7.3 CLI アプリ
  37. 7.4 Docker

  38. 暗号化キーについて

  39. 8.1 キーの仕組み
  40. 8.2 複数サーバーで使う場合
  41. 8.3 注意事項

  42. トラブルシューティング

  43. ライセンス・お問い合わせ


1. はじめに

1.1 paozip for PHP とは

paozip for PHP は、PHP のソースコードを暗号化するツールです。

暗号化すると、ソースコードはバイナリデータになって読めなくなります。 でも——実行はそのままできます。php sample.php でも、ブラウザからでも、まったく同じように動きます。

こんな時に便利: - 自社開発の PHP アプリを納品したい(でもソースは見せたくない) - WordPress のプラグインを配布したい(でもコードはコピーされたくない) - Laravel で作った業務システムを設置したい(でもロジックは秘密にしたい)

1.2 特長

特長 説明
完全透過 暗号化ファイルをそのまま php で実行できる。コード変更不要!
ファイル名そのまま sample.php は暗号化後も sample.php。拡張子は変わらない
Web でも CLI でも Apache, Nginx, PHP-FPM, コマンドライン——すべて対応
フレームワーク対応 Laravel, WordPress, CakePHP, Symfony... 全部動く
高速 C言語で書かれた PHP 拡張なので、実行時のオーバーヘッドはほぼゼロ
圧縮効果 暗号化時に zlib 圧縮するので、ファイルサイズが小さくなることも

1.3 仕組み(透過型暗号化方式)

paozip for PHP の最大の特長は 透過型 であること。

┌───────────────────────────────────────────────────────────┐
│  暗号化するとき                                             │
├───────────────────────────────────────────────────────────┤
│                                                           │
│   sample.php(ソースコード)                                │
│   ┌──────────────────────┐                                │
│   │ <?php                │                                │
│   │ function secret() {  │                                │
│   │   return 42;         │   paozip sample.php            │
│   │ }                    │ ──────────────────▶             │
│   └──────────────────────┘                                │
│                                                           │
│                             sample.php(暗号化済み)        │
│                             ┌──────────────────────┐      │
│                             │ 09 50 41 4F 5A 49 50 │      │
│                             │ 57 09 A3 7B 2D F1 ... │      │
│                             │ (バイナリデータ)      │      │
│                             └──────────────────────┘      │
│                                                           │
│   sample.php.pao(元ファイルのバックアップ)                  │
│                                                           │
└───────────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────────┐
│  実行するとき                                               │
├───────────────────────────────────────────────────────────┤
│                                                           │
│   php sample.php                                          │
│        │                                                  │
│        ▼                                                  │
│   PHP が sample.php を読み込もうとする                       │
│        │                                                  │
│        ▼                                                  │
│   paozip 拡張が横取り!                                     │
│   「あ、これ暗号化ファイルだ。復号してあげるね」               │
│        │                                                  │
│        ▼                                                  │
│   メモリ上で復号 → PHP に渡す                                │
│        │                                                  │
│        ▼                                                  │
│   PHP が普通に実行                                          │
│                                                           │
│   ※ ディスクには復号ファイルは書き出されない!                 │
│   ※ コードの変更は一切不要!                                 │
│                                                           │
└───────────────────────────────────────────────────────────┘

これが透過型のすごいところ: - php sample.php のコマンドは暗号化前と同じ - include 'sample.php'require 'sample.php' もそのまま動く - ブラウザからのアクセスも変わらない - ラッパーファイルも不要 - 何もしなくても、ただ動く

1.4 Python版との違い

paozip には PHP版と Python版があります。大きな違いは「透過型」か「ラッパー型」か。

【PHP版 — 透過型】                 【Python版 — ラッパー型】

sample.php(暗号化済み)           app.py(ラッパー)→ logic.pye(暗号化)

php sample.php                     python app.py
     │                                  │
     ▼                                  ▼
  自動で復号&実行                     ラッパーが復号&import

ファイル: 1つだけ                    ファイル: 2つ必要
変更: 不要                          変更: ラッパーを書く
拡張子: .php のまま                 拡張子: .pye に変更
比較 PHP版 Python版
暗号化方式 透過型(自動復号) ラッパー型
必要なファイル数 1つ(暗号化ファイルだけ) 2つ(ラッパー + 暗号化ファイル)
コード変更 不要 ラッパーに1行追加
拡張子 .php のまま .pye に変更
動作方式 PHP拡張(C言語) Python import フック

PHP版は拡張機能として動くので、コード変更が一切不要なのが最大のメリットです。


2. 動作環境

2.1 対応 OS

OS 対応
Ubuntu / Debian
CentOS / RHEL / AlmaLinux
Amazon Linux
Alpine Linux
macOS ✅(開発用)
Docker

2.2 対応 PHP バージョン

PHP バージョン 対応
PHP 7.4 〜 8.4+

2.3 対応サーバー環境

環境 対応
コマンドライン (CLI)
Apache + mod_php
Apache + PHP-FPM
Nginx + PHP-FPM
Docker

2.4 対応フレームワーク・CMS

フレームワーク/CMS 対応
Laravel
WordPress
CakePHP
Symfony
CodeIgniter
FuelPHP
その他

透過型なので、フレームワーク側の変更は一切不要です。

2.5 レンタルサーバーについて

サーバータイプ 対応
VPS / クラウド(AWS, GCP, さくら VPS 等)
専用サーバー
共用レンタルサーバー ❌ 多くの場合不可

共用レンタルサーバーでは PHP 拡張を自由にインストールできないため、 root 権限のある VPS やクラウドサーバーをおすすめします。


3. セットアップ

3.1 Docker で試す(おすすめ)

いきなり本番サーバーに入れるのは心配? Docker なら安心して試せます。

必要なもの: Docker Desktop(Windows / Mac)

Step 1: Docker 環境を起動

cd paozip-php-test
docker-compose up -d --build

初回はビルドに少し時間がかかります。コーヒーでも飲んで待ちましょう。

Step 2: コンテナに入る

docker-compose exec paozip-php-test bash

Step 3: セットアップ

cd /app/paozip-php
./setup.sh
╔══════════════════════════════════════╗
║   paozip for PHP セットアップ        ║
╚══════════════════════════════════════╝

[1/3] システム確認...
  ✔ root権限
  ✔ PHP 8.3
  ✔ phpize, gcc, make, zlib

[2/3] PHP拡張をビルド...
  ✔ paozip.so ビルド完了

[3/3] paozip コマンドをビルド...
  ✔ paozip コマンドビルド完了

══════════════════════════════════════════════════
  セットアップ完了!
══════════════════════════════════════════════════

Step 4: 確認

php -m | grep paozip

paozip と表示されれば OK!

3.2 Linux サーバーにインストール

必要なもの: root 権限、PHP 7.4+、開発パッケージ

# Ubuntu/Debian
sudo apt install php-dev gcc make zlib1g-dev

# CentOS/RHEL
sudo dnf install php-devel gcc make zlib-devel
# paozip-php フォルダをアップロードしてセットアップ
cd /tmp/paozip-php
sudo ./setup.sh

3.3 インストールの確認

php -m | grep paozip     # → paozip
paozip --version          # → バージョン表示

3.4 Web サーバーの設定

セットアップ後、Web サーバーを再起動してください:

# Apache
sudo systemctl restart apache2

# Nginx + PHP-FPM
sudo systemctl restart php-fpm

4. クイックスタート

4.1 暗号化してみよう

paozip sample.php
✔ sample.php を暗号化しました
  元ファイル: sample.php.pao

たったこれだけ!

4.2 暗号化されたか確認してみよう

cat sample.php
# → バイナリデータ(読めない!)

元のソースコードは完全に読めなくなっています。

4.3 暗号化ファイルを実行してみよう

php sample.php

暗号化前とまったく同じ出力! ソースコードは読めないのに、実行はできる。これが透過型暗号化です。

includerequire で読み込んでも動きます。ブラウザからも動きます。

4.4 元に戻してみよう

paozip --restore sample.php

.pao ファイルから元のソースコードが復元されます。

.pao ファイルは大切に保管してください。本番環境には配布しないでください。


5. CLI コマンドリファレンス

5.1 暗号化(encrypt)

paozip <ファイル>

sample.php → 暗号化、sample.php.pao → バックアップ(自動生成)。 すでに暗号化されているファイルはスキップされます。

5.2 復元(restore)

paozip --restore <ファイル>

.pao ファイルから元のソースコードを復元します。

5.3 一括暗号化

paozip *.php                         # カレントディレクトリの全 PHP
paozip app/Controllers/*.php         # 特定ディレクトリ
paozip app/Models/*.php app/Services/*.php  # 複数指定

5.4 コマンド一覧

コマンド 説明
paozip <file> ファイルを暗号化
paozip *.php ワイルドカードで一括暗号化
paozip -r <file> 復元(--restore
paozip -f <file> 確認なしで上書き(--force
paozip -h ヘルプ表示
paozip -V バージョン表示

6. PHP API リファレンス

6.1 paozip_encrypt()

string|null paozip_encrypt(string $data)

文字列データを暗号化します。

パラメータ 説明
$data string 暗号化するデータ
戻り値 string|null 暗号化されたデータ

6.2 paozip_decrypt()

string paozip_decrypt(string $data)

暗号化されたデータを復号します。CLI モード・root 権限が必要です。

通常の実行では自動復号されるので、この関数を呼ぶ必要はありません。

6.3 paozip_seed()

object paozip_seed()

暗号化キーの情報を返します(CLI・root 限定)。

6.4 paozip_is_licensed()

bool paozip_is_licensed()

製品版なら true、体験版なら false

6.5 paozip_get_product_info()

array paozip_get_product_info()
$info = paozip_get_product_info();
// ['product' => 'paozip for PHP', 'version' => '2.0.0',
//  'manufacturer' => 'Pao@Office', 'licensed' => true, 'email' => '...']

7. 各種環境での利用

7.1 Laravel

paozip app/Http/Controllers/SecretController.php
paozip app/Models/SecretModel.php
paozip app/Services/*.php

artisan コマンドも Composer オートロードも問題なく動作します。

7.2 WordPress

paozip wp-content/plugins/my-plugin/*.php
paozip wp-content/themes/my-theme/*.php

7.3 CLI アプリ

paozip my-batch.php
php my-batch.php --arg1 --arg2   # 暗号化前と同じ

cron ジョブに設定しているスクリプトも、暗号化後そのまま動作します。

7.4 Docker

FROM php:8.3-cli
COPY paozip-php/ /tmp/paozip-php/
RUN cd /tmp/paozip-php && ./setup.sh
COPY app/ /app/
RUN paozip /app/src/*.php && rm -f /app/src/*.pao
CMD ["php", "/app/src/main.php"]

ビルド時に暗号化し .pao を削除すれば、配布イメージにソースは含まれません。


8. 暗号化キーについて

8.1 キーの仕組み

暗号化キーは setup.sh 実行時に自動生成され、paozip.sopaozip コマンドの中に埋め込まれます。ファイルとしては保存されません。

8.2 複数サーバーで使う場合

開発サーバーで暗号化したファイルを本番サーバーで実行するには、同じ paozip.so を使う必要があります。

1. 開発サーバーで setup.sh を実行
2. ビルドされた paozip.so をコピー
3. 全サーバーに同じ paozip.so を配置

異なるサーバーで別々に setup.sh を実行すると異なるキーが生成されます。

8.3 注意事項


9. トラブルシューティング

症状 対処法
「PHP がない」 apt install php php-dev / dnf install php php-devel
「phpize がない」 apt install php-dev / dnf install php-devel
paozip が読み込まれない php.ini に extension=paozip.sopaozip.enable=1 を追加
暗号化ファイルが動かない 同じ paozip.so を使っているか確認。php -m \| grep paozip で確認
ブラウザで動かない Apache / PHP-FPM を再起動: systemctl restart apache2
セットアップ失敗 setup.log を確認

10. 使用許諾

paozip for PHP の使用について、paozip for PHP の使用者(以下「利用者様」と称します)と有限会社パオ・アット・オフィス(以下「弊社」と称します)は、以下の各項目についての内容に同意するものとします。

1. 使用許諾書

この使用許諾書は、利用者様が paozip for PHP を使用する場合に同意しなければならない契約書です。

2. 使用許諾書の同意

利用者様が paozip for PHP を使用する時点で、本使用許諾書に同意されたものとします。同意されない場合は、paozip for PHP を使用する事はできません。

3. ライセンス(使用権)の購入

利用者様が paozip for PHP の製品版を使用して開発を行う場合には、1台の開発用コンピュータで paozip for PHP を使用するにあたり、1ライセンスを購入する必要があります。

お客様環境等、開発コンピュータでないマシンで paozip for PHP を使用する場合ライセンスは必要ありません。ランタイムライセンスフリーでございます。

4. 著作権

paozip for PHP の著作権は、いかなる場合においても弊社に帰属いたします。

5. 免責

paozip for PHP の使用によって、直接的、あるいは、間接的に生じた、いかなる損害に対しても、弊社は補償賠償の責任を負わないものとします。

6. 禁止事項

paozip for PHP 及びその複製物を第三者に譲渡・貸与する事は出来ません。paozip for PHP を開発ツールとして再販/再配布することを禁止します。なお、暗号化されたファイルを配布することは問題ございません。

7. 保証の範囲

弊社は paozip for PHP の仕様を予告無しに変更することがあります。その場合の利用者様に対する情報提供は、弊社 WEB サイトにて行う事とします。

8. 適用期間

本使用許諾条件は利用者様が paozip for PHP を使用した日より有効です。


11. 代金支払い方法

paozip for PHP の製品版をご利用頂ける場合は、ライセンスを購入して頂く必要があります。

体験版について: すべての機能を制限なくお試しいただけます(機能制限なし)。

必要なライセンス数の数え方

paozip for PHP で開発を行うパソコンの台数

1ライセンス当たりの価格

11,000円(税込)

バグフィックス等のバージョンアップは原則として無償とさせて頂きます。

お支払方法

11,000円 × ライセンス数 を下記口座へ銀行振込、または、郵便振替による送金をして下さい。

銀行名 支店名(コード) 口座番号 名義
三菱UFJ銀行 新宿支店 (341) 普通 3831891 ユ)パオアットオフィス
PayPay銀行 すずめ支店 (002) 普通 6461359 ユ)パオアットオフィス
郵便口座番号 名義
00150-0-576845 有限会社 パオ・アット・オフィス

※ 振込手数料は利用者様負担でお願い致します。

お支払いの通知と製品の送付

  1. 振り込みが完了した時点で、必ず弊社 WEB サイトの入金連絡フォームから入金のご連絡をお願いいたします。
  2. 弊社では上記連絡を受けて入金確認を行い、paozip for PHP の製品版を利用者様へ電子メールにてお送りさせて頂きます。

見積書/納品書/請求書/領収証の発行

見積書/納品書/請求書/領収証の発行は可能でございます。製品サイトでの手続きにより発行いたします。


お問い合わせ

製品に関するお問い合わせは、下記までお願いいたします。

有限会社 パオ・アット・オフィス


paozip for PHP — あなたの PHP コードを、透過的に、確実に、守ります。


© 2001-2026 有限会社 パオ・アット・オフィス / https://www.pao.ac/