/usr/local/bin — 実行可能ファイル(コマンド)を置く場所
→ PATH に入るので、ユーザーが直接実行する。
/usr/local/lib — 実行ファイルが使うライブラリや内部ファイルを置く場所
→ 直接実行はしない。bin の裏側で使われる。
どちらも OS に上書きされない「ローカル専用領域」です。
/usr/bin や /usr/lib は OS やパッケージ管理(yum/dnf)が管理
/usr/local/bin と /usr/local/lib は 管理者(root)が手動で管理する領域
セキュリティと所有権の違い
/usr/local/bin の実行ファイルは root:root + 755 が必須
→ cloud-user 所有は危険(任意コード実行リスク)
/usr/local/lib のファイルも root:root が基本
→ ライブラリをユーザーが書き換えられると、bin の実行結果が乗っ取られる
Composer で SDK をインストール
(Composer を実行したディレクトリに vendor/ が作られます。/usr/local/lib などで実行する。)
composer require getbrevo/brevo-php
composer require guzzlehttp/guzzle
APIキーを取得
(authorized IP address も登録する)
PHPコード(公式クイックスタートに基づく構文)
<?php
require_once '/usr/local/lib/vendor/autoload.php';
use Brevo\Brevo;
use Brevo\TransactionalEmails\Requests\SendTransacEmailRequest;
use Brevo\TransactionalEmails\Types\SendTransacEmailRequestSender;
use Brevo\TransactionalEmails\Types\SendTransacEmailRequestToItem;
// APIクライアント初期化
$client = new Brevo(apiKey: 'YOUR_BREVO_API_KEY');
// メール送信
$result = $client->transactionalEmails->sendTransacEmail(
new SendTransacEmailRequest([
'subject' => 'Hello from Brevo API!',
'htmlContent' => '<html><body><p>Hello!</p><p>This is a test email via Brevo API.</p></body></html>',
'sender' => new SendTransacEmailRequestSender([
'name' => 'Your Name',
'email' => '[email protected]',
]),
'to' => [
new SendTransacEmailRequestToItem([
'email' => '[email protected]',
'name' => 'John Doe',
]),
],
])
);
echo 'Email sent. Message ID: ' . $result->messageId . PHP_EOL;
APIキーをハードコーディングすることは避けてください。環境変数を使用してください。
ポート587
ポート587は、現代のウェブでSMTP経由でメールを送信する際に使用される主要なポートです。送信に使用できる代替ポートもありますが、デフォルトとしてポート587から始めることをお勧めします。
ホスティングプロバイダによってポート587がブロックされている場合など、必要な場合にのみ別のポートの使用を検討してください。
ポート2525
ポート2525は、IETFやIANAによって公式に認められたSMTPポートではありません。しかしながら、SMTP送信においてポート587の代替として広く利用されており、ほとんどのISPやクラウドホスティングプロバイダーでサポートされています。
ポート587がブロックされている場合、ポート2525は有効な代替オプションとして機能します。
ポート465
ポート465は当初SMTPS(SSL経由のSMTP)用に指定されていましたが、その後廃止され、別の用途に転用されました。しかし、廃止されたにもかかわらず、多くのISPやクラウドホスティングプロバイダーは、SMTP送信のためにポート465を引き続きサポートしています。
SSL暗号化を使用して暗号化された接続を作成したい場合、このポートは有効な代替オプションとして機能します。
「SMTP & API」は、右上の設定マークから。
APIキーはどこで確認できますか?
APIキーを保護し、セキュリティを強化するため、既存のAPIキーはBrevoアカウントからは表示されません。APIキーとMCPページにはキーの末尾の数字のみが表示されるため、必要に応じて複数のキーを区別することができます。
そのため、APIキーを作成する際は、安全な場所に保管することを強くお勧めします。APIキーを紛失した場合は、新しいAPIキーを作成し、安全な場所に保管してから、以前のキーと交換してください。
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
「-- はオプションの終わりを示し、それ以降はファイル名や引数として扱われる」
「-- は『これ以降の入力はオプションではありません』という意味」
php --
→ PHP に「ここでオプション解析を終わりにして、後ろはスクリプトの引数として扱え」と指示
--install-dir=/usr/local/bin --filename=composer
→ これらは Composer インストーラに渡す引数
(PHP のオプションではない)
確認
# composer --version
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Continue as root/super user [yes]? ⏎エンター
Composer version 2.9.7 2026-04-14 13:31:52
PHP version 8.3.29 (/usr/bin/php)
Run the "diagnose" command to get more detailed diagnostics output.
Composer 本体のアップデート方法
composer self-update
composer update は プロジェクト内のライブラリを更新するコマンド であり、
Composer 本体の更新とは別です。
Composer 本体 → composer self-update
プロジェクトの依存パッケージ → composer update(慎重に扱う必要あり)
VPS側パケットフィルター → ホスト側での“外側の防御壁”
OSに届く前の通信を止める。OSが壊れていても効く。
firewalld → ゲストOS内部のファイアウォール
OSが受け取ったパケットに対して制御する。OSが動いていないと効かない。
<?php
putenv('PATH=/usr/local/bin:/usr/bin:/bin:/home/ユーザー名/bin');
exec('echo $PATH', $out);
var_dump($out);
PHP の exec() を使う前に、環境変数 PATH をセットできます。
この方法は「その PHP プロセス内だけ」有効。
但し、絶対パス指定が最も安全で、PATH に依存するのは避けるべきです。
1)SSH 接続をしてサーバーを確認
SSH 接続をする
$ ssh -p 10022 ユーザー名@サーバー(ホスト名)
PATH を確認
~]$ echo $PATH
/usr/lib/courier-imap/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ユーザー名/.composer/vendor/bin:/home/ユーザー名/bin
/home/ユーザー名/bin が存在しなかったので、bin ディレクトリを作成しました。
~]$ mkdir bin
CPU アーキテクチャを確認
~]$ uname -m
x86_64
結果の意味
| uname -m の結果 | 選ぶべきファイル |
| x86_64 | amd64 |
| i686 / i386 | i686 |
| aarch64 | arm64 |
| armv7l | armhf |
| armv6l | armel(または armhf) |
2)「ファイルを置くだけで実行できる(=インストール不要のスタンドアロン版)」FFmpeg をダウンロードし、解凍。
そして、その中の ffmpeg と ffprobe を /home/ユーザー名/bin へ移動。
~]$ cd /tmp
tmp]$ curl -LO https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
tmp]$ tar xf ffmpeg-release-amd64-static.tar.xz
tmp]$ mv ffmpeg-x.x.x-amd64-static/ffmpeg /home/ユーザー名/bin/
tmp]$ mv ffmpeg-x.x.x-amd64-static/ffprobe /home/ユーザー名/bin/
パーミッションは、bin ディレクトリ,ffmpeg と ffprobe すべて 755 になっています。
3)確認
]$ ffmpeg -version
※ シェルでは PATH に入るが、PHP(Apache / php-fpm)では PATH に入らないので、PHP exec() から ffmpeg を呼ぶときには、絶対パスで ffmpeg を呼ぶ。
$cmd = sprintf(
'/home/ユーザー名/bin/ffmpeg -y -i %s -vf %s -vframes 1 %s 2>&1',
escapeshellarg($input),
escapeshellarg('crop=100:100'),
escapeshellarg($temp)
);
※ ちなみに、PHP が実際にどの PATH を使っているかは下記で確認できます。
<?php
exec('echo $PATH', $out);
var_dump($out);
但し、絶対パス指定が最も安全で、PATH に依存するのは避けるべきです。
OS が管理するもの → /usr/bin
自分が追加したもの → /usr/local/bin
root 使えない環境 → /home/username/bin