2024-04-09
当初、Apache上のCGIとしてPHPを動かすことは考えなかったので、以下のようにそれぞれ単体で入れてしまっていた。
apt install apache2
./configure --enable-mbstring --with-openssl --with-iconv=/usr/local
当然、これではApacheのモジュールとしてPHPは動かない。よって以下、導入したのでメモ。
aptで入れたapacheがmodに対応しているか確認
/usr/sbin/apache2 -l Compiled in modules: core.c mod_so.c mod_watchdog.c http_core.c mod_log_config.c mod_logio.c mod_version.c mod_unixd.c
mod_so.cがあるので大丈夫そう。
apxs2コマンドの導入
aptのapache2だけでは入っていない、apache2-devを入れる必要がある。
apt search apxs ソート中... 完了 全文検索... 完了 apache2-dev/jammy-updates 2.4.52-1ubuntu4.8 amd64 Apache HTTP Server (development headers) sudo apt install apache2-dev which apxs2 /usr/bin/apxs2
導入済みのソースphpディレクトリに移動しmake cleanしてから再度configureする
cd /usr/local/src/php-8.2.3/ make clean ./configure --enable-mbstring --with-openssl --with-iconv=/usr/local --with-apxs2=/usr/bin/apxs2 --enable-zts
なお、他サイトでは--with-tsm-pthreads, --enable-maintainer-ztsなどというのが散見するが、これは古くもうそんなオプションは無いので注意。-enable-ztsだけでよい。
-enable-ztsをつけてマルチスレッドモードのphpモジュールを作成しないと、Apache組み込み時に
Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP.
というエラーで終了する。configureによるPHPの出力にも、
+--------------------------------------------------------------------+ | *** WARNING *** | | | | You have built PHP for Apache's current non-threaded MPM. | | If you change Apache to use a threaded MPM you must reconfigure | | PHP with --enable-zts
とちゃんとガイダンスしてくれている。
ビルド、インストール
念のためもういちどmake cleanをしてからビルド、インストール。
make clean make sudo make install
/usr/local/bin/php
/usr/lib/apache2/modules/libphp.so
/etc/apache2/mods-available/php.load
/etc/apache2/mods-enabled/php.load(シンボリックリンク)
がインストールされるので、ファイルを確認しておく。
/etc/apache2/mods-available/php.loadを編集する
これだけでは.phpファイルを設置しても中身が表示されるだけでPHPが走らない。以下のように書き加える。
LoadModule php_module /usr/lib/apache2/modules/libphp.so <filesmatch> SetHandler application/x-httpd-php </filesmatch>
Apacheの停止/起動とphpinfoの表示
systemctl stop apache2 systemctl start apache2 systemctl status apache2
エラーが出ていなければマルチスレッド版PHPモジュール+Apache2の起動成功。
phpinfo.phpを以下のように作成し、ブラウザアクセスで情報画面が出ればOK。
<?php phpinfo(); ?>
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
Windowsのデスクトップ画面をそのまま配信するための下準備
WindowsでGPUの状態を確認するには(ASUS系監視ソフトの自動起動を停止する)
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモ
さくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Python】Spacyを使用して文章から出発地と目的地を抜き出す
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
Windows版Google Driveが使用中と言われアンインストールできない場合
GitLabにHTTPS経由でリポジトリをクローン&読み書きを行う
【Apache】サーバーに同時接続可能なクライアント数を調整する
VirtualBoxの仮想マシンをWindows起動時に自動起動し終了時に自動サスペンドする
【PHP】Mail/mimeDecodeを使ってメールの中身を解析(準備編)
【Linux】iconv/libiconvをソースコードからインストール