end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

install php ver.7.1.8 , and setup apache httpd 2.2

過去、phpは何度かinstallしていますが、今回は php ver.7.1.8

end0tknr.hateblo.jp

end0tknr.hateblo.jp

2017.8.11追記

このエントリを記載後、wordpress ver.4.0.17をinstallしましたが、wordpressのwed管理画面で 次のようなエラーが表示されました。 wordpress ver.4.0.17は、php ver.7.1に未対応のようですので、今回はココまでにします。

Warning: Parameter 1 to wp_default_styles() expected to be a reference, value given in wordpress/wp-includes/plugin.php on line 580

php前準備

php-7.1.8/INSTALL を参照したり、make中のerror messageを参照しながら、 以下を、install

re2c - lexer generator for C/C++

http://re2c.org/

$ wget https://github.com/skvadrik/re2c/releases/download/0.16/re2c-0.16.tar.gz
$ tar -zxvf re2c-0.16.tar.gz
$ cd re2c-0.16
$ ./configure
$ make
$ make check
$ su
# make install

flex - lexical analyser

https://sourceforge.net/projects/flex/files/

$ wget https://sourceforge.net/projects/flex/files/flex-2.6.0.tar.gz
$ tar -zxvf flex-2.6.0.tar.gz
$ cd flex-2.6.0
$ ./configure
$ make
$ make check
$ su
# make install

bison - general-purpose parser generator

https://www.gnu.org/software/bison/

$ wget http://ftp.gnu.org/gnu/bison/bison-3.0.4.tar.gz
$ tar -zxvf bison-3.0.4.tar.gz
$ cd bison-3.0.4
$ ./configure
$ make
$ make check
$ su
# make install

libxml2-devel

# yum install libxml2-devel

ICU - International Components for Unicode

$ wget http://download.icu-project.org/files/icu4c/59.1/icu4c-59_1-src.tgz
$ tar -zxvf icu4c-59_1-src.tgz
$ cd icu/source
$ ./configure
$ make
$ make check
$ su
# make install

openssl

以前、installしたものは 非sharedだったようですので

$ wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz
$ tar -zxvf openssl-1.1.0f.tar.gz
$ cd openssl-1.1.0f
$ ./config --prefix=/usr/local/openssl_1_1_0 shared
$ make
$ make test
$ su
# make install

zlib-devel の install dirを調査

configureのoptionで指定しますので

# yum install zlib-devel
   Package zlib-devel-1.2.7-17.el7.x86_64 already installed and latest version
$ rpm -ql zlib-devel-1.2.7-17.el7.x86_64

php

$ tar -zxvf php-7.1.8.tar.gz
$ cd php-7.1.8
$ ./configure \
  --with-apxs2=/home/endo/local/apache22/bin/apxs \
  --enable-mbstring \
  --with-mysqli=/usr/local/mysql/bin/mysql_config \
  --with-pdo-mysql=/usr/local/mysql \
  --with-openssl=/usr/local/openssl_1_1_0 \
  --with-zlib=/usr

$ make
$ make test
   :
mysqli_release_savepoint() [ext/mysqli/tests/mysqli_release_savepoint.phpt]
mysqli_report() [ext/mysqli/tests/mysqli_report.phpt]
mysqli_report(), change user, MySQL 5.6+ [ext/mysqli/tests/mysqli_report_new.phpt]
mysqli_store_result() [ext/mysqli/tests/mysqli_store_result_buffered_c.phpt]
Bug #66141 (mysqlnd quote function is wrong with NO_BACKSLASH_ESCAPES after failed query) [ext/pdo_mysql/tests/bug66141.phpt]
Bug #70389 (PDO constructor changes unrelated variables) [ext/pdo_mysql/tests/bug70389.phpt]
Bug #61411 (PDO Segfaults with PERSISTENT == TRUE && EMULATE_PREPARES == FALSE) [ext/pdo_mysql/tests/bug_61411.phpt]
MySQL PDO->__construct() - Generic + DSN [ext/pdo_mysql/tests/pdo_mysql___construct.phpt]
PDO::ATTR_ORACLE_NULLS [ext/pdo_mysql/tests/pdo_mysql_attr_oracle_nulls.phpt]
PDO MySQL specific class constants [ext/pdo_mysql/tests/pdo_mysql_class_constants.phpt]
MySQL PDO->exec(), affected rows [ext/pdo_mysql/tests/pdo_mysql_exec.phpt]
=====================================================================

=====================================================================
WARNED TEST SUMMARY
---------------------------------------------------------------------
MySQL PDO->prepare(), emulated PS [ext/pdo_mysql/tests/pdo_mysql_prepare_emulated.phpt] (warn: XFAIL section but test passes)
=====================================================================
$ su
# make install

# cp php.ini-development /usr/local/lib/php.ini

apache 2.2 との連携

httpd.conf

phpのconfigure optionで 「with-apxs2=/home/endo/local/apache22/bin/apxs」指定してますので 「modules/libphp7.so」は自動追加されているはずです。

それ以外は、自身で追加して下さい。

LoadModule php7_module        modules/libphp7.so
AddType application/x-httpd-php .php

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

phpinfo.php による動作確認

<?php
phpinfo();
?>

↑このようなphp scriptを用意し、アクセスすると↓このように表示されます。

画像が長すぎて読めないかもしれませんが f:id:end0tknr:20170811105310p:plain