PHP

PHP
色々なWebアプリを動かすのに必須なミドルウェア。LAMPの"P"たる所以。
PHP5.4以下とPHP5.5以上の間に開発の壁があり、5.4だと動いた物が5.5だと動かなかったりする。
また、現在のPHPオフィシャルメンテナー期間はメジャーバージョンリリースがされた2世代前までなので、
PHP5.7が公開されたら、オフィシャル版PHP5.4も終息となる予定。


ただし、CentOSプロジェクトとか他メンテナーが絡んでいる物は、そっち側の意向によって変化する。
例:CentOSのyumのBaseリポジトリで提供しているPHP5.3はCentOS6が終了するまでメンテナンスする予定 --> メモ記事

インストール

0. ビルドオプション
長いオプションを使うので、オプションの意味は割愛。大体は『$ ./configure --help』打てば出る。
以下は改行してあるが、実際には一行化した上でconfigure.optionとかに出力しておき、
『$ ./configure `cat ../configure.option`』とかにすると楽。

--prefix=/usr/local/php \
--sysconfdir=/etc \
--with-apxs2=/usr/local/apache/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-libdir=lib64 \
--with-curl=/usr/lib64 \
--with-jpeg-dir=/usr/lib64 \
--with-png-dir=/usr/lib64 \
--with-vpx-dir=/usr/lib64 \
--with-xpm-dir=/usr/lib64 \
--with-bz2 \
--with-gd \
--with-gettext \
--with-gmp \
--with-iconv \
--with-kerberos \
--with-layout \
--with-openssl \
--with-pic \
--with-xmlrpc \
--with-zlib \
--without-pspell \
--without-unixODBC \
--enable-bcmath \
--enable-calendar \
--enable-cli \
--enable-exif \
--enable-ftp \
--enable-gd-native-ttf \
--enable-intl \
--enable-mbstring \
--enable-pcntl \
--enable-pdo \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-xml \
--enable-xmlreader \
--enable-xmlwriter \
--enable-zip \
--disable-dba \
--disable-debug \
--disable-dom \
--disable-fileinfo \
--disable-phar \
--disable-posix \
--disable-rpath \
--disable-sysvmsg \
--disable-sysvsem \
--disable-sysvshm \
--disable-wddx



1. ビルド
上記のconfigureオプションを別ファイル化した場合のビルド例

# tar jxvf php-5.6.1.tar.bz2
# cd php-5.6.1
# ./configure `cat ../configure.option`
# make
# make test
# make install



2. 設定
ソースコードの中にphp.iniが入っているので、それを/etcにコピーして使用する。
また、apacheとの連携をしている場合はhttpd.confにPHPのLoadModuleが追記されているかも確認する

# cp {$PHP_SrcDIR}/php.ini-development /etc/php.ini

 
『$ ./configure --sysconfdir=/etc』を外した場合はコンフィグの場所が変わる
/usr/local/php/etcでは無いので注意

# cp {$PHP_SrcDIR}/php.ini-development /usr/local/php/lib/php.ini

 
phpinfo()の結果「Loaded Configuration File」が「none」でphp.iniを読み込んでない時は、
apacheのhttpd.confに下記設定を追加すれば、php.iniを直接指定して読み込ませる事が出来る。

・PHP v7.X
---
<IfModule php7_module>
PHPIniDir /etc/php.ini
</IfModule>

・PHP v5.X
---
<IfModule php5_module>
PHPIniDir /etc/php.ini
</IfModule>


エクステンション

アプリケーションによっては、外部エクステンション(拡張モジュール)を使う場合がある。
PHPのソースに同梱されている物と、自前で用意する物の2種類がある。
 

 APCu