#author("2018-11-04T22:18:27+09:00","default:nowsky","nowsky") #author("2018-11-04T22:20:40+09:00","default:nowsky","nowsky") *PHP [#o754150a] [[PHP:+http://php.net/]] 色々なWebアプリを動かすのに必須なミドルウェア。LAMPの"P"たる所以。 PHP5.4以下とPHP5.5以上の間に開発の壁があり、5.4だと動いた物が5.5だと動かなかったりする。 また、現在のPHPオフィシャルメンテナー期間はメジャーバージョンリリースがされた2世代前までなので、 PHP5.7が公開されたら、オフィシャル版PHP5.4も終息となる予定。 ~ ただし、CentOSプロジェクトとか他メンテナーが絡んでいる物は、そっち側の意向によって変化する。 例:CentOSのyumのBaseリポジトリで提供しているPHP5.3はCentOS6が終了するまでメンテナンスする予定 --> [[メモ記事>+http://www.ns-lab.org/digiloog/2014/09/article_2613/]] ~ *インストール [#pb63c1ab] &size(16){&font(b){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 ~ &size(16){&font(b){1. ビルド};}; 上記のconfigureオプションを別ファイル化した場合のビルド例 # tar jxvf php-5.6.1.tar.bz2 # cd php-5.6.1 # ./configure `cat ../configure.option` # make # make test # make install ~ &size(16){&font(b){2. 設定};}; ソースコードの中にphp.iniが入っているので、それを/etcにコピーして使用する。 また、apacheとの連携をしている場合はhttpd.confにPHPのLoadModuleが追記されているかも確認する # cp {$PHP_SrcDIR}/php.ini-development /etc/php.ini 『$ ./configure --sysconfdir=/etc』を外した場合はコンフィグの場所が変わる &font(b){/usr/local/php/etcでは無い};ので注意 # cp {$PHP_SrcDIR}/php.ini-development /usr/local/php/lib/php.ini phpinfo()の結果「Loaded Configuration File」が「none」で&font(b){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> ~ *エクステンション [#u936efb2] *エクステンション [#u5a13725] アプリケーションによっては、外部エクステンション(拡張モジュール)を使う場合がある。 PHPのソースに同梱されている物と、自前で用意する物の2種類がある。 #region(APCu) - [[PECL Package APCu:+https://pecl.php.net/package/APCu]] PHP経由でDB操作をする時、ローカルキャッシュを活かす場合に使う。 PDNS Managerで必須になるのでPHPをソースビルドした後に追加する。 # wget https://pecl.php.net/get/apcu-5.1.12.tgz # tar zxvf apcu-5.1.12.tgz # cd apcu-5.1.12 # /usr/local/php/bin/phpize # ./configure --with-php-config=/usr/local/php/bin/php-config # make # make install # vi /etc/php.ini --- extension=/usr/local/php/lib64/extensions/apcu.so extension=apcu.so apc.enabled=1 apc.shm_size=32M apc.ttl=7200 apc.enable_cli=1 #endregion