PHP 8.1.0 RC 2 available for testing

Unix システムへのインストール

目次

本章では、UNIX 系のシステムへの PHP のインストールと設定に関する 手引きを示します。使用するプラットフォームや Web サーバーについての セクションを参照して、インストールを行ってください。

このマニュアルでは、 「インストールにあたっての一般的な注意事項」 の章で述べたように、Web 用のセットアップを主に扱います。加えて、 コマンドラインから PHP を使うためのセットアップについても扱います。

Unix プラットホームに PHP をインストールする方法はいくつかあり、 コンパイルして設定するやり方と(コンパイル済みの)パッケージを使う方法とに 別けられます。この手引きでは、コンパイルして設定する方法を主に取り上げます。 Unix 系システムには、パッケージを用いるインストールシステムを持つものも多く、 一般的なセットアップを行うには、パッケージが役に立つでしょう。ただし、 (セキュアサーバーや様々なデータベースドライバなど)少々特殊な機能が必要な場合、 PHP や Web サーバーをビルドする必要が有るかもしれません。ソフトウエアの ビルドに不慣れな場合は、必要な機能を含めてビルドされたパッケージを 誰か他の人が作成済みでないかを調べてみると良いでしょう。

コンパイルにあたって必要な知識とソフトウエアを以下に示します。

  • UNIX に関する基本的な知識 ("make" および C コンパイラを使える程度)
  • ANSI C コンパイラ
  • Web サーバー
  • 個別のモジュール関連のコンポーネント (GDPDF ライブラリなど)

Git から取得したソースや、自分でカスタマイズしたソースをビルドするには さらにこれらが必要です。

  • autoconf: 2.59+ (PHP >= 7.0.0), 2.64+ (PHP >= 7.2.0)
  • automake: 1.4+
  • libtool: 1.4.x+ (ただし 1.4.2 は除く)
  • re2c: 0.13.4+
  • bison:
    • PHP 7.0 - 7.3: 2.4 以降 (Bison 3.x を含む)
    • PHP 7.4: > 3.0

PHP の初期設定および設定プロセスは、configure スクリプトに与えられたコマンドラインオプションによりコントロールされます。 ./configure --help とすると、 オプションの一覧と簡単な解説が表示されます。 本マニュアルでは、オプションの種類ごとに別けて解説されています。 PHP 本体のオプションの一覧は 付録 にまとめられています。 各拡張モジュール特有のオプションは、関数リファレンスのページに記述されています。

PHP の configure が完了していないと、 拡張モジュールや本体の実行ファイルのビルドができません。 make コマンドの実行にあたっては、注意してください。 configure がうまく行かず原因もよくわからない場合は、 問題が起きた場合 についての章を参照してください。

注意:

Unixシステム (OpenBSD や SELinux のような) によっては、 セキュリティ上の理由で、 メモリ上のページに書き込み可能属性と実行可能属性の両方を付与することを 許可しないかもしれません。 これは PaX MPROTECT とか W^X (Write XOR Execute) 防御と呼ばれています。 しかしながら、この手のメモリマッピングは PCRE の JIT サポートに必要なので、 PHP を PCRE の JIT サポート抜きでビルドする か、 何とかしてシステムが提供するホワイトリストに PHP のバイナリを入れなければならないでしょう。

注意: Android ツール群を使った ARM 向けのクロスコンパイルには、今のところ対応していません。

add a note add a note

User Contributed Notes 2 notes

up
11
cj3 at clifjackson dot net
3 years ago
I recently ran in to a situation where I was building PHP 7.1.13 from source. Configuration & make went fine, however, when I ran make install it hung. It turns out that if you are building PHP with Apache (apxs) the make file calls apxs with the -a flag which tells it to modify the httpd.conf file. If, for whatever reason, the file is not writeable then it fails and you get the hang.

Line 108 in my Makefile looks like this:

INSTALL_IT = $(mkinstalldirs) '$(INSTALL_ROOT)/usr/lib64/httpd/modules' && $(mkinstalldirs) '$(INSTALL_ROOT)/etc/httpd/conf' && /usr/sbin/apxs -S LIBEXECDIR='$(INSTALL_ROOT)/usr/lib64/httpd/modules'      -S SYSCONFDIR='$(INSTALL_ROOT)/etc/httpd/conf' -i -a -n php7 libphp7.la

I had to remove the -a flag and then it was fine.
up
-20
Arjan van Bentem
15 years ago
When using Red Hat Fedora, beware of Security Enhanced Linux, SELinux.

Quoted from Red Hat: "The security goal is to make sure that Apache HTTP is only reading the static Web content, and not doing anything else such as writing to the content, connecting to database sockets, reading user home directories, etc."

These limitations include, among many other things, using mkdir to create directories, using fopen to access files, using fopen or get_headers to read URLs, or using exec to run external applications that happen to use sockets (or maybe access some files, but which will run fine when executed from the command line as Unix user apache or httpd -- such as HylaFAX "faxstat" as invoked from nweb2fax recvq.php and sendq.php).

See /var/log/messages for any denials due to the SELinux policy. To disable it:

- System, Administration, Security Level and Firewall
- open the SELinux tab
- click the Transition tree
- check Disable SELinux protection for Apache HTTP
- execute /etc/init.d/httpd restart

See also http://fedora.redhat.com/docs/selinux-faq/ and http://php.net/results.php?q=selinux&p=wholesite
To Top