PHP
PHPは、動的なWebページを生成する汎用のサーバー側スクリプト言語です。
インストール
USE フラグ
PHP パッケージで最重要の USE フラグである、SAPI (サーバ API) USE フラグは、apache2、cgi、そして fpm です。これらのフラグと並んで、PHP インタプリタの様々な機能を有効化するための、複雑なフラグのリストがあります:
USE flags for dev-lang/php The PHP language runtime engine
acl
|
Add support for Access Control Lists |
apache2
|
Add Apache2 support |
apparmor
|
Support FPM application confinement through sys-libs/libapparmor |
argon2
|
Enable password hashing algorithm from app-crypt/argon2 |
bcmath
|
Enable the BCMath Arbitrary Precision Mathematics extension |
berkdb
|
Add support for sys-libs/db (Berkeley DB for MySQL) |
bzip2
|
Use the bzlib compression library |
calendar
|
Add support for calendars (not using mcal!) |
cdb
|
Add support for the CDB database engine from the author of qmail |
cgi
|
Add CGI script support |
cjk
|
Add support for Multi-byte character languages (Chinese, Japanese, Korean) |
cli
|
Enable the Command-Line Interface (CLI) SAPI |
coverage
|
Include gcov symbols for test coverage and lcov reports. Only useful for extension developers, and requires GCC. |
ctype
|
Enable the Character type checking (ctype) extension |
curl
|
Add support for client-side URL transfer library |
debug
|
Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces |
embed
|
Enable embed SAPI |
enchant
|
Enable the Enchant spelling library extension using app-text/enchant |
exif
|
Add support for reading EXIF headers from JPEG and TIFF images |
ffi
|
Enable the Foreign Function Interface (FFI) extension using dev-libs/libffi |
fileinfo
|
Enable the File Information extension |
filter
|
Enable the Data Filtering extension |
firebird
|
Add support for the Firebird relational database |
flatfile
|
Add dbm support for flat files |
fpm
|
Enable the FastCGI Process Manager SAPI |
ftp
|
Add FTP (File Transfer Protocol) support |
gd
|
Enable the Image Processing and GD extension (requires media-libs/libjpeg-turbo and media-libs/libpng) |
gdbm
|
Add support for sys-libs/gdbm (GNU database libraries) |
gmp
|
Add support for dev-libs/gmp (GNU MP library) |
iconv
|
Enable support for the iconv character set conversion library |
imap
|
Add support for IMAP (Internet Mail Application Protocol) |
inifile
|
Add dbm support for .ini files |
intl
|
Enables the intl extension for extended internalization support |
iodbc
|
Add support for iODBC library |
jit
|
Enable PCRE JIT support |
kerberos
|
Add kerberos support |
ldap
|
Add LDAP support (Lightweight Directory Access Protocol) |
ldap-sasl
|
Add SASL support for the PHP LDAP extension using dev-libs/cyrus-sasl |
libedit
|
Use the libedit library (replacement for readline) |
lmdb
|
Enable support for dev-db/lmdb db backend |
mhash
|
Add support for the mhash library |
mssql
|
Add support for Microsoft SQL Server database |
mysql
|
Add mySQL Database support |
mysqli
|
Add support for the improved mySQL libraries |
nls
|
Add Native Language Support (using gettextGNU locale utilities) |
oci8-instant-client
|
Use dev-db/oracle-instantclient-basic as Oracle provider instead of requiring a full Oracle server install |
odbc
|
Add ODBC Support (Open DataBase Connectivity) |
opcache
|
Enables built-in opcode cache, replacing pecl-apc et al. |
pcntl
|
Enable the Process Control extension |
pdo
|
Enable the PHP Data Objects extension |
phar
|
Enables the phar extension to provide phar archive support |
phpdbg
|
Enable the PHP Debug Command Line SAPI (like gdb for php) |
posix
|
Add support for POSIX-compatible functions |
postgres
|
Add support for the postgresql database |
qdbm
|
Add support for the qdbm (Quick Database Manager) library |
readline
|
Enable support for libreadline, a GNU line-editing library that almost everyone wants |
selinux
|
!!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur |
session
|
Add persistent session support |
session-mm
|
Include dev-libs/mm support for session storage |
sharedmem
|
Enable the shmop extension |
simplexml
|
Enable the SimpleXML extension |
snmp
|
Add support for the Simple Network Management Protocol if available |
soap
|
Add support for SOAP (Simple Object Access Protocol) |
sockets
|
Add support for tcp/ip sockets |
sodium
|
Enable support for crypto through dev-libs/libsodium |
spell
|
Add dictionary support |
sqlite
|
Add support for sqliteembedded sql database |
ssl
|
Add support for SSL/TLS connections (Secure Socket Layer / Transport Layer Security) |
systemd
|
Enable use of systemd-specific libraries and features like socket activation or session tracking |
sysvipc
|
Enable the PHP System-V semaphore, shared memory and IPC extension |
test
|
Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently) |
threads
|
Add threads support for various packages. Usually pthreads |
tidy
|
Add support for HTML Tidy |
tokenizer
|
Add support for the PHP file parser |
tokyocabinet
|
Enable support for dev-db/tokyocabinet db backend |
truetype
|
Add support for FreeType and/or FreeType2 fonts |
unicode
|
Add support for Unicode |
webp
|
Enable webp support for GD in php-7.x |
xml
|
Add support for XML files |
xmlreader
|
Enable the XMLReader extension |
xmlwriter
|
Enable the XMLWriter extension |
xpm
|
Add support for XPM graphics format |
xslt
|
Build the XSL extension |
zip
|
Enable support for ZIP archives |
zlib
|
Add support for zlib (de)compression |
この ebuild は、"production" バージョンの php.ini に対し、より厳密なセキュリティ設定と、Gentoo システム用にデフォルトパスを調整する修正を施したものをインストールします。上流の "production" と "development" の php.ini ファイルは、/usr/share/doc/php-* にインストールされます。
拡張
拡張モジュールをインストールするには、まずどのバージョンの PHP に対して拡張モジュールをコンパイルするかを決定してください。これは、PHP_TARGETS 変数を設定することで行えます:
/etc/portage/make.conf
PHP_TARGETS="php5-6"
複数のバージョンを定義することができます; スペースで区切って、追加のバージョンを追加してください。php スロットの名前が "5.6" のとき、対応する PHP_TARGETS の値は php5-6
であることに注意してください。これは現行の USE 名の制限によるものです。
Emerge
上記のUSEフラグ設定を行った後、変更を有効にするためにシステムを更新する必要があります:
root #
emerge --ask --update --changed-use --deep @world
複数のバージョンの PHP を実行する
PHP 開発のために Gentoo を使用する大きな利点のひとつは、バージョンスロットです。複数のバージョンの PHP の間で切り換えたり、複数のバージョンを同時に実行するのは、とても簡単に行えます。これはすべて app-eselect/eselect-php パッケージが提供する eselect コマンドによって行われ、これは PHP をインストールすると自動的に emerge されるはずです。
例えば、異なるバージョンの PHP を選択することで、cli SAPI では PHP 7.0 を実行しながら、システムの web サーバとしては PHP 5.6 を実行する、ということが可能になります。また、システム管理者またはアプリケーション開発者は、アプリケーションをすぐに異なるバージョンの PHP でテストすることが可能になります。
cli SAPI モジュールのために利用可能なバージョンの一覧を表示するには、次の構文を使用してください:
root #
eselect php list cli
[1] php5.5 [2] php5.6 * [3] php7.0
*
(アスタリスク) は、選択されたモジュールのために現在アクティブなバージョンを示しています。他の SAPI を確認するには、単に cli
の部分を fpm
や cgi
や apache2
モジュールで置き換えてください。
バージョンを切り替えるには、以下を利用して下さい:
root #
eselect php set cli 3
この例での数値 3
は、上で使用した list
サブコマンドの出力にある数値に対応しています。これで、コマンドラインのためには PHP バージョン 7.0 が使用されるようになりました:
root #
php -v
PHP 7.0.10-pl0-gentoo (cli) (built: Aug 23 2016 12:38:44) ( NTS )
設定
PHP の構成は /etc/php に置かれます。サーバ API (SAPI) ごとにそれぞれ、そして PHP のバージョンごとにそれぞれ 1 つのサブディレクトリを含みます。例えば、PHP-5.6 apache2 SAPI のための構成ファイルは /etc/php/apache2-php5.6 にインストールされます。
ウェブサーバ
PHPをサーバ側で使用するには、WebサーバをインストールしてPHPを使用するように設定する必要があります。 数多くの一般的なWebサーバーが次に簡単に触れられます。
Nginx
nginx をインストールするには、単に emerge してください:
root #
emerge --ask www-servers/nginx
make.conf でカスタムの NGINX_MODULES_HTTP 値が設定されている場合は、
fastcgi
モジュールが有効化されていることを確認してください。Nginx がインストールされたら、/etc/nginx/nginx.conf の server セクションを以下のように変更してください:
/etc/nginx/nginx.conf
FastCGI を介した PHP を有効化するための nginx 構成の一部server { listen 127.0.0.1; server_name localhost; access_log /var/log/nginx/localhost.access_log main; error_log /var/log/nginx/localhost.error_log info; root /var/www/localhost/htdocs; location ~ \.php$ { try_files $uri $uri/ =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; include fastcgi.conf; } }
それでは、ウェブサイトを機能させるために関連するサービスを開始してください。php-fpm init スクリプトは PHP FastCGI Process Manager を開始します。FastCGI を使用すると、ウェブサーバは PHP の計算をこのプロセスマネージャに任せて、負荷を軽減することができます。
サービスマネージャとして OpenRC を実行している場合は:
root #
rc-service nginx start
root #
rc-service php-fpm start
systemd では:
root #
systemctl start nginx
root #
systemctl start php-fpm@7.2
php-fpm
サービス名の後ろのバージョン番号は、利用可能な PHP のバージョンによって変わるでしょう。適宜修正してください。lighttpd
lighttpd が fastcgi
をサポートするようにビルドされていること、および php
USE フラグが無効になっていることを確認してください。
/etc/portage/package.use
www-servers/lighttpd fastcgi -php
Lighttpd にはデフォルトの FastCGI 構成ファイルが付属していますが、残念ながら、一般的な FCGI セットアップではなく、古い PHP FCGI SAPI でのみ動作するように記述されています。 php
USE フラグが無効になっているため、含まれません。 ただし、FPM で使用できる構成ファイルの優れた基盤を提供します。
Edit /etc/lighttpd/mod_fastcgi.conf to look something like this:
/etc/lighttpd/mod_fastcgi.conf
Enable FastCGI on lighttpdserver.modules += ("mod_fastcgi") fastcgi.server = ( ".php" => ( "localhost" => ( "host" => "127.0.0.1", "port" => "9000" ) ) )
Note the host
and port
parts.
Since Gentoo ships with a working php-fpm.ini file, located in /etc/php/fpm-php5/php-fpm.ini, and init script, starting the services is all that is needed:
root #
/etc/init.d/php-fpm start
root #
/etc/init.d/lighttpd start
Apache (mod_php)
Apache に PHP5 モジュール (mod_php) を読み込ませるように設定するには、/etc/conf.d/apache2 内で APACHE2_OPTS 変数に -D PHP
を追加してください。以前は、(-D PHP5
のように) PHP のバージョンも追加する必要があったのを覚えている人もいるでしょう。しかしながら、app-eselect/eselect-php バージョン 0.8.1 から、将来のメジャーバージョンを簡単に統合できるようにするために、変数はただの -D PHP
に変更されました。
/etc/conf.d/apache2
Apace に mod_php を読み込ませるように設定する## (settings for PHP5 and above) APACHE2_OPTS="-D PHP"
PHP が apahce2
USE フラグとともにビルドされていることを確認してください。
If for some reason the system is missing the PHP module integration file /etc/apache2/modules.d/70_mod_php.conf, currently provided by app-eselect/eselect-php when installed with apache2
USE flag set, manually insert it. Its current content is displayed below.
/etc/apache2/modules.d/70_mod_php.conf
<IfDefine PHP> # The mod_php.so symlink is controlled by # eselect-php. However, the module name changed from # php5_module to php7_module so we can't blindly load whatever # is there. Instead we let eselect-php manage a small # configuration file that loads the appropriate module. # # This is relative to ServerRoot (see httpd.conf). Include ../../../var/lib/eselect-php/mod_php.conf # Tell apache that mod_php should handle PHP files. # # NOTE: Avoiding AddHandler/AddType for security (bug # #538822). Please read the related news item! <FilesMatch "\.(php|php[57]|phtml)$"> SetHandler application/x-httpd-php </FilesMatch> # PHP source files which are meant to be displayed as # syntax-highlighted source code. <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch> DirectoryIndex index.php index.phtml </IfDefine>
Although multiple PHP versions can be installed on a system, Apache can only use a single PHP version with mod_php. Support for multiple PHP versions on Apache is available using fpm. The eselect php command is used to switch between active mod PHP versions.
関連項目
- Upgrading to PHP 5.6, guide to upgrade older installations to 5.6
- Upgrading to PHP 7.1, guide to upgrade older installations to 7.1
- Enabling PHP support in the Apache article