l

o

a

d

i

n

g

.

.

.

[エンジニア備忘録] Ubuntu18にPHP8.5をインストールの巻

2026/09/04

サーバー

t f B! P L
eyecatch とある国内大手企業が提供している国内産のVPSサーバーをいつも利用させてもらっているんですが、 Ubuntuの最新版が24なのに、18から一向にOSアップデートしてくれないんですよ。 自分でOSアップグレードしてもいいんですが、OSのアップグレードって、まあまあリスクが高いので、あまり個人的にはやりたくないんですよね。 ちなみに、そのVPSサービスは、いまだに、オワコンのCentOSなんていうのもリストに載せたままになっているし、 メールサーバーとして、PTRの登録もできないので、ホント公開Webとか、API置き場としてしか使えないんですよね。 (それでも、便利に使わせてもらっていますが) そして、今回久しぶりにWebサービスを作ったので、それを設置しようと思ったら、PHPの最新版が入らないじゃありませんか(PHP ver 8.5です) ということで、モジュールコンパイルからの手順を備忘録で残しておきたいと思います。

1. 必要なパッケージのインストール

sudo apt update sudo apt install -y \ build-essential autoconf libtool bison re2c \ libxml2-dev libsqlite3-dev libcurl4-openssl-dev \ libpng-dev libjpeg-dev libfreetype6-dev libonig-dev \ libzip-dev libssl-dev pkg-config libreadline-dev \ libicu-dev

2. PHP 8.5 のソース取得と展開

cd /usr/local/src sudo wget https://www.php.net/distributions/php-8.5.9.tar.gz sudo tar xzf php-8.5.9.tar.gz cd php-8.5.9

3. configure

Ubuntu 18.04 の libcurl が古い(7.58.0)ため、--without-curl が必要でした。 ./configure \ --prefix=/usr/local/php85 \ --with-config-file-path=/usr/local/php85/etc \ --enable-fpm \ --with-fpm-user=www-data \ --with-fpm-group=www-data \ --enable-mbstring \ --without-curl \ --with-openssl \ --with-zlib \ --enable-bcmath \ --enable-gd \ --with-jpeg \ --with-freetype \ --with-mysqli \ --with-pdo-mysql \ --enable-intl \ --with-zip \ --with-readline

エラーに遭遇

libcurl >= 7.61.0 が必要とわかり、--without-curlをつける。 readline.h が見つからないため、以下を実行 sudo apt install libreadline-dev 成功すると最後に Thank you for using PHP. と表示されます。

4. ビルド・インストール

make -j$(nproc) sudo make install シンボリックリンクの設置 sudo ln -sf /usr/local/php85/bin/php /usr/local/bin/php php -v

5. PHP-FPM の設定

ソースインストール後は設定ファイルが .default のままなのでコピーします。 sudo cp /usr/local/php85/etc/php-fpm.conf.default /usr/local/php85/etc/php-fpm.conf sudo cp /usr/local/php85/etc/php-fpm.d/www.conf.default /usr/local/php85/etc/php-fpm.d/www.conf

www.conf の主な設定

sudo nano /usr/local/php85/etc/php-fpm.d/www.conf # ini user = www-data group = www-data ; 今回は TCP で待ち受けることにした listen = 127.0.0.1:9000

PHP-FPM の起動

# テスト起動(フォアグラウンド) sudo /usr/local/php85/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php85/etc/php-fpm.conf # 問題なければ Ctrl+C で止め、デーモン起動 sudo pkill php-fpm sudo /usr/local/php85/sbin/php-fpm 確認 ps aux | grep php-fpm

ソケットを使いたい場合(上記ができていればこの作業は不要)

(Unixソケットにする場合は listen = /usr/local/php85/var/run/php-fpm.sock にする) ソケット用ディレクトリ(ソケットを使う場合): sudo mkdir -p /usr/local/php85/var/run sudo chown www-data:www-data /usr/local/php85/var/run

6. Nginx の設定

location ~ \.php$ の部分を PHP-FPM の待ち受けに合わせます。 今回は TCP に合わせた例: location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; # ← ここを合わせる fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } 設定チェックと再読み込み: sudo nginx -t sudo systemctl reload nginx

7. サイトディレクトリの権限

シンプルに www-data 所有にする場合: sudo chown -R www-data:www-data /var/www/html/petamemo sudo find /var/www/html/petamemo -type d -exec chmod 755 {} \; sudo find /var/www/html/petamemo -type f -exec chmod 644 {} \; 専用ユーザー "web" を使う場合の例: sudo useradd -r -m -d /home/web -s /usr/sbin/nologin -u 1001 web sudo usermod -aG www-data web sudo chown -R web:www-data /var/www/html/petamemo sudo find /var/www/html/petamemo -type d -exec chmod 775 {} \; sudo find /var/www/html/petamemo -type f -exec chmod 664 {} \; ※ web ユーザーに sudo 権限は付けない(セキュリティ上の理由)。

8. よくあるエラーと対処

connect() to unix:.../php-fpm.sock failed (2: No such file or directory)

原因 : ソケットが無い / PHP-FPM未起動 / listen設定不一致 対応 : PHP-FPMを起動し、Nginx の fastcgi_pass と listen を一致させる

failed to open configuration file '.../php-fpm.conf'

原因 : 設定ファイルが無い 対応 : .default からコピーする

make: *** No targets specified and no makefile found

原因 : configure が失敗している 対応 : configure のエラーを解消してから make する

補足・今後やること

- PHP-FPM の自動起動(systemd ユニットを作る) - php.ini の調整(date.timezone や upload_max_filesize など) - 可能なら Ubuntu 22.04 / 24.04 へのアップグレードを検討

あとがき

備忘録って、自分用に書くだけなんですよ。 他の人って、よほど同じ環境じゃないと、なんの意味もないんですよ。 だって、今時Ubuntu18ですよ! サポート切れてるんですよ! でも、このVPS、全部で8個ぐらいサーバー立ち上げているので、 全部この処理をやって、PHPを今の所の最新版にしておいたほうがよさそうだな・・・

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ