ゆう's Blog
Composer をインストール

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側のパケットフィルター」と「firewalld」

VPS側パケットフィルター → ホスト側での“外側の防御壁”
OSに届く前の通信を止める。OSが壊れていても効く。

firewalld → ゲストOS内部のファイアウォール
OSが受け取ったパケットに対して制御する。OSが動いていないと効かない。

cwebp / gif2webp / webpmux

ffmpeg と同じく静的バイナリでも動く

レンタルサーバー(シンフリーサーバー)でFFmpegを利用する

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_64amd64
i686 / i386i686
aarch64arm64
armv7larmhf
armv6larmel(または 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 に依存するのは避けるべきです。

/usr/bin と /usr/local/bin

OS が管理するもの → /usr/bin
自分が追加したもの → /usr/local/bin
root 使えない環境 → /home/username/bin

ffmpeg スタンドアロン版とインストール版

スタンドアロン版(静的ビルド)
→ すべての必要ライブラリを ffmpeg 本体に内包。
→ どこに置いても動く。依存関係ゼロ。サイズは大きい。
→ 再現性が高く、サーバー移動にも強い。

インストール版(動的ビルド)
→ OS の共有ライブラリに依存。
→ OS のバージョンやパッケージ状況で動作が変わる。
→ サイズは小さいが、環境差異で壊れやすい。

インストールできる環境でも、スタンドアロン版の方が安定・安全・再現性が高い。

シェルの PATH と PHP の PATH は違う

シェルの PATH

echo $PATH

PHP が実際に使っている PATH

exec('echo $PATH', $out); var_dump($out);

PHP で絶対パスを使う
which で確認した絶対パスを使う。

月末にのみ実行する crontab の定番パターン

0 0 28-31 * * [ "$(date +\%d -d tomorrow)" = "01" ] && 実行したいコマンド

CentOS Stream に Google Chrome をインストールする

$ wget -O /tmp/chrome.rpm https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

root で。

# dnf localinstall /tmp/chrome.rpm

su を使えるユーザー,使えないユーザー

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 グループのメンバーです。