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が動いていないと効かない。
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
スタンドアロン版(静的ビルド)
→ すべての必要ライブラリを ffmpeg 本体に内包。
→ どこに置いても動く。依存関係ゼロ。サイズは大きい。
→ 再現性が高く、サーバー移動にも強い。
インストール版(動的ビルド)
→ OS の共有ライブラリに依存。
→ OS のバージョンやパッケージ状況で動作が変わる。
→ サイズは小さいが、環境差異で壊れやすい。
インストールできる環境でも、スタンドアロン版の方が安定・安全・再現性が高い。
シェルの PATH
echo $PATH
PHP が実際に使っている PATH
exec('echo $PATH', $out);
var_dump($out);
PHP で絶対パスを使う
which で確認した絶対パスを使う。
0 0 28-31 * * [ "$(date +\%d -d tomorrow)" = "01" ] && 実行したいコマンド
$ wget -O /tmp/chrome.rpm https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
root で。
# dnf localinstall /tmp/chrome.rpm
Fedora で su できるユーザー と su できないユーザー を作る方法は、「wheel グループ」に所属させるかどうかで決まります。
Fedora では wheel グループに属するユーザーだけが su を使える という設定がデフォルトで有効になっています。
wheel グループに追加(su を許可)
$ sudo usermod -aG wheel username
wheel グループから削除する
$ sudo gpasswd -d username wheel
確認
$ groups username
wheel グループのユーザー一覧を確認する
getent group wheel
出力例:
wheel:x:10:root,user1,user2
カンマ区切り部分が wheel グループのメンバーです。