絖綛 N@i.jp  昨日:00019535
 今日:00009134
 総計:00082849
keywords
管理者専用
  Post   Add link   Control Panel 































新しいトピック
最新:10/01 12:07


新しいコメント
最新:07/28 16:47






管理人へMAIL

プライバシーポリシー

PHP5.6 が EOL(6)

参照:PHP: Hypertext Preprocessor


いよいよPHP 7への切り替えだ


 PHP 7へ移行する準備は整ったので、PHP自体のアップデート作業を進めよう。
 現時点で PHP 7 でサポートされているのは 7.1/7.2/7.3系の3つだ。7.1〜7.3 の違いは、主に新機能の追加で、サポートが打ち切られた機能などは特に無いようだ。それならば可能な限り最新版にするべきだろう。と言うことで、PHP 7.3.2(2019/02/07にリリースされたばかり)に移行することにした。

1) PHP 7.3.2のダウンロード
 PHPホームページのDownloadsから php-7.3.2 をダウンロードして解凍。

$ xzcat php-7.3.2.tar.xz | tar xf -
$ cd php-7.3.2

2) ビルド方法("build.sh"スクリプト作成)
 configure に指定するオプションが多く、今後もVupの度に何度も使うことになるので、ビルドスクリプト"build.sh"を作成しておく。今回の"build.sh"はこんな感じ。

#!/usr/local/bin/bash -x

export MACOSX_DEPLOYMENT_TARGET=10.4
export GCC="/usr/local"
export SSL="/usr/local/libressl"
export PATH="${GCC}/bin:$PATH"
export DYLD_LIBRARY_PATH="${GCC}/lib:${DYLD_LIBRARY_PATH}"
export PKG_CONFIG_PATH="${SSL}/lib/pkgconfig:${PKG_CONFIG_PATH}"
export CFLAGS="-O2 -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}"
export PREFIX="/usr/local/php7"

./configure \
    --prefix=${PREFIX} \
    --with-apxs2=/usr/local/apache2/bin/apxs \
    --with-config-file-scan-dir="${PREFIX}/php.d" \
    --with-iconv-dir=/usr/local \
    --with-openssl=${SSL} \
    --with-zlib=/usr \
    --with-bz2=/usr/local \
    --with-gd=/usr/local \
    --with-zlib-dir=/usr \
    --with-jpeg-dir=/usr/local \
    --with-png-dir=/usr/local \
    --with-xpm-dir=/usr/X11R6/lib \
    --with-freetype-dir=/usr/local \
    --with-xmlrpc \
    --enable-exif \
    --enable-wddx \
    --enable-soap \
    --enable-ftp \
    --with-openssl-dir=${SSL} \
    --enable-sockets \
    --enable-mbstring \
    --enable-calendar \
    --enable-bcmath \
    --with-pcre-dir=/usr/local \
    --enable-pcntl \
    --enable-shmop \
    --enable-sysvmsg \
    --enable-sysvsem \
    --enable-sysvshm \
    --with-curl=/usr/local \
    --with-mysql-sock=/tmp/mysql.sock \
    --with-mysqli=mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --with-libxml-dir=shared,/usr/local \
    --with-kerberos=/usr \
    --with-imap-ssl=/usr \
    --with-iodbc=shared,/usr \
    --with-gettext=shared,/usr/local \
    CC="${GCC}/bin/gcc" \
    CXX="${GCC}/bin/g++" \
    CPPFLAGS="-I${SSL}/include -I/usr/local/include -I/usr/include" \
    CFLAGS="${CFLAGS}" \
    CXXFLAGS="${CFLAGS}" \
    LDFLAGS="-L${SSL}/lib -L/usr/local/lib -L/usr/lib"
make

注)「¥」は実際には半角の「\」(バックスラッシュ)

インストール先(PREFIX)は PHP 5 を上書きしてしまわないよう "/usr/local/php7" とした。こうしておけば、ホームページの表示や動作がおかしかったら、いつでも PHP 5 に戻せる。

3) ビルドしてインストール

$ chmod +x build.sh
$ ./build.sh
+ ./configure --prefix=/usr/local/php7 ...
〜長いので略〜
Generating files
configure: creating ./config.status
creating main/internal_functions.c
creating main/internal_functions_cli.c
+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.

config.status: creating php7.spec
config.status: creating main/build-defs.h
config.status: creating scripts/phpize
config.status: creating scripts/man1/phpize.1
config.status: creating scripts/php-config
config.status: creating scripts/man1/php-config.1
config.status: creating sapi/cli/php.1
config.status: creating sapi/phpdbg/phpdbg.1
config.status: creating sapi/cgi/php-cgi.1
config.status: creating ext/phar/phar.1
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands
+ make
〜長いので略〜
Build complete.
Don't forget to run 'make test'.

$ sudo make install

 ビルドにはかなり時間がかかる。また make test するのを忘れないようにと言われるが、このテストにも時間がかかるうえに100% OKにはならなかった。まぁこのBlogが使っている機能の範囲で問題がなければ良いので、テストはサボッてインストールした。

4) php.iniファイルの編集

 PHPの初期設定ファイル "/usr/local/php7/lib/php.ini" を編集する。殆どデフォルトのままでも構わないと思うが、今回変更/追加したのは以下の赤字のMySQLi拡張とZend opcacheの部分。Zend opcache部分は行先頭の「;」を削除して有効化する。

zend_extension=/usr/local/php7/lib/php/extensions/no-debug-zts-20180731/opcache.so
〜
[Pdo_mysql]
pdo_mysql.default_socket=/tmp/mysql.sock
〜
[MySQLi]
mysqli.default_port = 3306
mysqli.default_socket = /tmp/mysql.sock
mysqli.default_user = root
mysqli.default_pw =
〜
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

5) Apache2の設定

Apache2の設定ファイル"httpd.conf"を編集し、PHP 5のモジュールを無効にし、代わりにPHP 7のモジュールを有効化する。

LoadModule php5_module        modules/libphp5.so
 ↓
#LoadModule php5_module        modules/libphp5.so
LoadModule php7_module        modules/libphp7.so
〜略〜
<IfModule php5_module>
    AddHandler application/x-httpd-php .php
    AddHandler application/x-httpd-php-source .phps
</IfModule>

<IfModule php7_module>
    AddHandler application/x-httpd-php .php
    AddHandler application/x-httpd-php-source .phps
</IfModule>

 赤字が修正/追加箇所。<IfModule php5_module>〜</IfModule> は php5_module を有効化しない限り影響ないので、残しておいて構わない。

6) Apache2を再起動し、動作確認

$ /usr/local/apache2/bin/apachectl restart

 Apache2の再起動完了後に phpinfo()を表示させてみたら正常に表示されたので、とりあえず PHP 7 は問題なく動作している様子。また、このBlogでも今のところ問題はない様子。

 以上で PHP 7 への移行は一応完了だ。


< 過去の記事 [ 2月の Blog リスト ] 新しい記事 >

2019 calendar
2月
12
3456789
10111213141516
17181920212223
2425262728


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.