macOSで、PHPをソースからビルド、Apacheと連携する
主題
macOSで、PHPをソースからビルド、Apacheと連携する手順を述べる。
背景
Big Surになって融通の効かなくなった、OSビルトインのApache Webサーバーの代わりに、別のApache Webサーバーを導入した。
せっかくなので、PHPを導入し、Apacheから使えるようにすることにした。なお、PHPを自前ビルドした理由は、OSビルトインのPHPをバージョン確認すると、将来削除するで〜
と警告するせいでもある。
手順
-
Apacheのコンパイルとインストール
当然のことだが、Apacheは導入済みとして話を進める。未導入の場合は、この記事に沿って導入されたい。 -
PHP導入に必要な項目のコンパイルとインストール
-
pkg-configのコンパイル&インストール
curl -LO https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz tar xf pkg-config-0.29.2.tar.gz cd pkg-config-0.29.2 ./configure --with-internal-glib make sudo make install
-
cmakeのコンパイルとインストール
curl -LO https://github.com/Kitware/CMake/releases/download/v3.21.0/cmake-3.21.0.tar.gz tar xf cmake-3.21.0.tar.gz cd cmake-3.21.0 rm Modules/FindJava.cmake curl -OJL "https://docs.google.com/uc?export=download&id=0B2uOKVwFe1AXU1QzdXlvc0VRSEU" patch -p1 < cmake_CMakeLists.patch ./bootstrap; make; sudo make install
-
OpenSSLのコンパイルとインストール
curl -LO https://www.openssl.org/source/openssl-1.1.1k.tar.gz tar xf openssl-1.1.1k.tar.gz cd openssl-1.1.1k ./config --openssldir=/usr/local/ssl make sudo make install
-
GNU bisonのコンパイルとインストール
curl -LO https://ftp.gnu.org/gnu/bison/bison-3.7.6.tar.xz tar xf bison-3.7.6.tar.xz cd bison-3.7.6 ./configure --prefix=/usr/local/gnu_bison make sudo make install
-
re2cのコンパイルとインストール
curl -LO https://github.com/skvadrik/re2c/releases/download/2.1.1/re2c-2.1.1.tar.xz tar xf re2c-2.1.1.tar.xz cd re2c-2.1.1 ./configure --prefix=/usr/local/re2c make sudo make install sudo ln -s /usr/local/re2c/bin/re2c /usr/local/bin/re2c
-
libxml2のコンパイルとインストール
curl -LO ftp://xmlsoft.org/libxml2/libxml2-2.9.12.tar.gz tar xf libxml2-2.9.12.tar.gz cd libxml2-2.9.12 ./configure --prefix=/usr/local/libxml2 make sudo make install sudo ln -s /usr/local/libxml2/lib/pkgconfig/libxml-2.0.pc /usr/local/lib/pkgconfig/libxml-2.0.pc
-
SQLite3のコンパイルとインストール
curl -LO https://www.sqlite.org/2021/sqlite-autoconf-3360000.tar.gz tar xf sqlite-autoconf-3360000.tar.gz cd sqlite-autoconf-3360000 ./configure --prefix=/usr/local/sqlite3 make sudo make install sudo ln -s /usr/local/sqlite3/lib/pkgconfig/sqlite3.pc /usr/local/lib/pkgconfig/sqlite3.pc
-
libcurlのコンパイルとインストール
curl -LO https://curl.se/download/curl-7.77.0.tar.xz tar xf curl-7.77.0.tar.xz cd curl-7.77.0 ./configure --prefix=/usr/local/curl --with-openssl make sudo make install sudo ln -s /usr/local/curl/lib/pkgconfig/libcurl.pc /usr/local/lib/pkgconfig/libcurl.pc
-
libiconvのコンパイルとインストール
curl -LO https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz tar xf libiconv-1.16.tar.gz cd libiconv-1.16 ./configure --prefix=/usr/local/libiconv make sudo make install
-
onigurumaのコンパイルとインストール
curl -LO https://github.com/kkos/oniguruma/releases/download/v6.9.7.1/onig-6.9.7.1.tar.gz tar xf onig-6.9.7.1.tar.gz cd onig-6.9.7 ./configure --prefix=/usr/local/oniguruma make sudo make install sudo ln -s /usr/local/oniguruma/lib/pkgconfig/oniguruma.pc /usr/local/lib/pkgconfig/oniguruma.pc
-
libjpegのコンパイルとインストール
curl -LO https://www.ijg.org/files/jpegsrc.v9d.tar.gz tar xf jpegsrc.v9d.tar.gz cd jpeg-9d ./configure --prefix=/usr/local/jpeg make sudo make install sudo ln -s /usr/local/jpeg/lib/pkgconfig/libjpeg.pc /usr/local/lib/pkgconfig/libjpeg.pc
-
libpngのコンパイルとインストール
curl -LO http://prdownloads.sourceforge.net/libpng/libpng-1.6.37.tar.xz tar xf libpng-1.6.37.tar.xz cd libpng-1.6.37 ./configure --prefix=/usr/local/libpng make sudo make install sudo ln -s /usr/local/libpng/lib/pkgconfig/libpng.pc /usr/local/lib/pkgconfig/libpng.pc sudo ln -s /usr/local/libpng/lib/pkgconfig/libpng16.pc /usr/local/lib/pkgconfig/libpng16.pc
-
libzipのコンパイルとインストール
curl -LO https://libzip.org/download/libzip-1.8.0.tar.xz tar xf libzip-1.8.0.tar.xz cd libzip-1.8.0 mkdir build cd build cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/libzip make sudo make install sudo ln -s /usr/local/libzip/lib/pkgconfig/libzip.pc /usr/local/lib/pkgconfig/libzip.pc
-
zlibのコンパイルとインストール
curl -LO https://zlib.net/zlib-1.2.11.tar.xz tar xf zlib-1.2.11.tar.xz cd zlib-1.2.11 ./configure --prefix=/usr/local/zlib make test sudo make install sudo ln -s /usr/local/zlib/lib/pkgconfig/zlib.pc /usr/local/lib/pkgconfig/zlib.pc
-
-
PHPのコンパイルとインストール
curl -LO https://www.php.net/distributions/php-8.0.8.tar.xz tar xf php-8.0.8.tar.xz cd php-8.0.8 ./configure --prefix=/usr/local/php \ --enable-cli \ --enable-mbstring \ --enable-xml \ --enable-fpm \ --enable-ftp \ --enable-exif \ --enable-fileinfo \ --enable-gd \ --enable-pcntl \ --enable-pdo \ --with-curl \ --with-curl=/usr \ --with-jpeg \ --with-openssl \ --with-iconv=/usr/local/libiconv \ --with-apxs2=/usr/local/apache2/bin/apxs \ --with-mysqli \ --with-pdo-mysql \ --with-zip \ --with-zlib make cd libs install_name_tool -change "@rpath/libzip.5.dylib" \ "/usr/local/libzip/lib/libzip.5.dylib" \ libphp.so cd ../ sudo make install sudo ln -s /usr/local/php/bin/php /usr/local/bin/php
-
php.iniのコピー、設定および設置
phpの初期設定ファイルphp.iniは、ダウンロードしたソースコードフォルダphp-8.0.8
直下にphp.ini-development
およびphp.ini-production
というファイル名で入っている。どちらかを選んでコピー、php.ini
にリネームの上、以下のように設置する。(この設置場所はphp –ini
を実行すると表示されるものに合わせている)sudo cp -p php.ini /usr/local/php/lib
設置前、つまりコピー&リネームした段階で、ファイルをテキストエディタで開き、PHP7.4 ぼくのかんがえたさいきょうのphp.iniを参照して編集すること。
-
Apache側の設定(Apacheのhttpd.confにPHPを設定)
PHPインストールによって、libphp.so
は、/usr/local/apache2/modules
にコピーされ、httpd.confにもロードされるように書き込まれる。これを含めてhttpd.confを変更する方法と、PHPについての設定ファイルを作成、httpd.confに読み込ませる方法のどちらかを好みで使用されたい。-
httpd.confを変更する方法。変更をdiff形式で示す。
diff -u httpd.conf.bak httpd.conf --- httpd.conf.bak 2021-07-18 17:03:59.000000000 +0900 +++ httpd.conf 2021-07-18 17:03:59.000000000 +0900 @@ -163,6 +163,7 @@ LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so #LoadModule rewrite_module modules/mod_rewrite.so +LoadModule php_module modules/libphp.so <IfModule unixd_module> # @@ -262,9 +263,13 @@ # is requested. # <IfModule dir_module> - DirectoryIndex index.html + DirectoryIndex index.php index.html </IfModule> +<FilesMatch \.php$> + SetHandler application/x-httpd-php +</FilesMatch> + # # The following lines prevent .htaccess and .htpasswd files from being # viewed by Web clients.
-
PHP用設定ファイルを用意し、httpd.confに読み込ませる方法
-
共有オブジェクトファイルの準備
cd php-8.0.8/libs sudo mkdir -p /usr/local/php/lib/httpd/modules sudo cp -p libphp.so /usr/local/php/lib/httpd/modules
-
PHP用設定ファイル
# httpd.confにphpをincludeする設定ファイル # # PHPの場所 : /usr/local/bin/php # 対象バージョン : PHP 8.0.8 (cli) (built: Jul 18 2021 16:57:35) ( ZTS ) # # これ↓をhttpd.confに追記する #Include /usr/local/apache2/conf/extra/php.conf # # AddType allows you to add to or override the MIME configuration # file specified in TypesConfig for specific file types. # AddType application/x-httpd-php .php # # Dynamic Shared Object (DSO) Support # # To be able to use the functionality of a module which was built as a DSO you # have to place corresponding `LoadModule' lines at this location so the # directives contained in it are actually available _before_ they are used. # Statically compiled modules (those listed by `httpd -l') do not need # to be loaded here. # LoadModule php_module /usr/local/php/lib/httpd/modules/libphp.so # # DirectoryIndex: sets the file that Apache will serve if a directory # is requested. # <IfModule dir_module> DirectoryIndex index.php </IfModule> # # php.iniの場所 # PHPIniDir "/usr/local/php/lib/php.ini"
-
httpd.confの読み込み設定。変更をdiff形式で示す。
diff -u httpd.conf.bak httpd.conf --- httpd.conf.bak 2021-07-19 12:34:39.000000000 +0900 +++ httpd.conf 2021-07-19 12:46:56.000000000 +0900 @@ -163,6 +163,7 @@ LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so #LoadModule rewrite_module modules/mod_rewrite.so +#LoadModule php_module modules/libphp.so <IfModule unixd_module> # @@ -517,5 +518,5 @@ SSLRandomSeed connect builtin </IfModule> +Include /usr/local/apache2/conf/extra/php.conf
-
-
-
Apacheとphpの連携確認
echo "<?php phpinfo();?>" > ~/Sites/info.php
ブラウザのアドレス欄に
http://localhost/~user_name/info.php
と入力(user_nameは、ご自身のログイン名に変える)し、PHPの情報が表示されるのを確認する。
参考サイト
- OSXで最新のPHPをビルドする方法
- PHP 7.3をビルドしてApacheと連携させる
- PHP7.4 ぼくのかんがえたさいきょうのphp.ini
- Apacheのhttpd.confにPHPを設定する方法
- macOS CatalinaのApacheでlocalhostにアクセスしたかった
以上。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント