PHP Version 7.1.2 インストール / PHP 7.0.14 からのバージョンアップ対応 / CentOS 6

プログラミング言語PHP

バージョン

 状態:-  閲覧数:657  投稿日:2017-03-08  更新日:2019-04-30
phpinfo();
PHP Version 7.1.2


$ php -v
PHP 7.0.14 (cli) (built: Dec  7 2016 09:27:46) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
   with Xdebug v2.5.1, Copyright (c) 2002-2017, by Derick Rethans


調査開始

 閲覧数:160 投稿日:2017-03-08 更新日:2017-03-15 
前回
PHP7.1 インストール失敗

$ which php
/opt/remi/php70/root/usr/bin/php


$ whereis php
php: /usr/bin/php /etc/php.d /etc/php.ini /usr/lib64/php /usr/include/php /usr/share/php /usr/share/man/man1/php.1.gz


$ /opt/remi/php70/root/usr/bin/php -v
PHP 7.0.14 (cli) (built: Dec  7 2016 09:27:46) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
   with Xdebug v2.5.1, Copyright (c) 2002-2017, by Derick Rethans


$ /usr/bin/php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/imagick.so' - /usr/lib64/php/modules/imagick.so: undefined symbol: zend_object_store_get_object in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mecab.so' - /usr/lib64/php/modules/mecab.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 7.1.2 (cli) (built: Feb 15 2017 08:51:17) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies


PATHは先頭に記述している方が優先される
$ echo $PATH
/home/★★/.rvm/gems/ruby-2.0.0-p247/bin:/home/★★/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/★★/.rvm/rubies/ruby-2.0.0-p247/bin:/home/★★/.nodebrew/current/bin:/opt/remi/php70/root/usr/bin:/opt/remi/php70/root/usr/sbin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/★★/bin:/home/★★/.rvm/bin

・この内PHPに関連しているのは、「/opt/remi/php70/root/usr/bin」のみ

色々実験

 閲覧数:166 投稿日:2017-03-08 更新日:2017-03-08 

「~/.bash_profile」「~/.bashrc」


なくても良い
・削除(実際にはリネーム)した状態の挙動確認

$ php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/imagick.so' - /usr/lib64/php/modules/imagick.so: undefined symbol: zend_object_store_get_object in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mecab.so' - /usr/lib64/php/modules/mecab.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 7.1.2 (cli) (built: Feb 15 2017 08:51:17) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies


$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin



デフォルト「~/.bash_profile」配置


▼.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

$ source .bash_profile
$ echo $PATH
/home/★★/.rvm/gems/ruby-2.0.0-p247/bin:/home/★★/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/★★/.rvm/rubies/ruby-2.0.0-p247/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/★★/bin:/home/★★/.rvm/bin

$ php -v  
                                                                                                                                     
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/imagick.so' - /usr/lib64/php/modules/imagick.so: undefined symbol: zend_object_store_get_object in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mecab.so' - /usr/lib64/php/modules/mecab.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 7.1.2 (cli) (built: Feb 15 2017 08:51:17) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies



犯人は「~/.bashrc」


つまり、今回の不具合の原因は「~/.bashrc」にあることが判明
・環境変数 $PATHを「~/.bashrc」で設定している
export PATH=/opt/remi/php70/root/usr/bin:/opt/remi/php70/root/usr/sbin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/opt/remi/php70/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export MANPATH=/opt/remi/php70/root/usr/share/man:${MANPATH}
export PATH=$HOME/.nodebrew/current/bin:$PATH


分かったこと

 閲覧数:163 投稿日:2017-03-08 更新日:2017-03-08 

PHP 7.0.14


インストール先
/opt/remi/php70/root/usr/bin/php

起動
・コマンドライン経由

確認方法
$ which php
/opt/remi/php70/root/usr/bin/php


環境変数 $PATH
・「~/.bashrc」で設定


PHP 7.1.2


インストール先
/usr/bin/php

起動
・Apache経由
※Apacheで使用可能なPHPは、最後にインストールしたPHPバージョンのみ

環境変数 $PATH
・未設定


「php -i」は必ずしも同じ「phpinfo()」結果を検索しているとは限らない


より正確には?
・「php -i」は「phpinfo()」結果を検索する
・しかし、コマンド経由起動の「php -i」が実行する「phpinfo()」内容と、apache経由で起動する「phpinfo()」内容が異なることはあり得る
・つまり、一つのCentOS内で複数のPHPバージョンが存在することはあり得る
・特別なことは何もしなくても…

最終的に

 閲覧数:167 投稿日:2017-03-08 更新日:2017-03-08 

「~/.bashrc」を削除した上で「~/.bash_profile」変更


$ vi .bash_profile
PATH=/usr/bin:/opt/remi/php70/root/usr/bin:/opt/remi/php70/root/usr/sbin:$PATH:$HOME/bin:$HOME/.nodebrew/current/bin
export PATH


デフォルト
PATH=$PATH:$HOME/bin
export PATH


下記でも良い
PATH=/usr/bin:/opt/remi/php70/root/usr/bin:/opt/remi/php70/root/usr/sbin${PATH:+:${PATH}}$HOME/bin:$HOME/.nodebrew/current/bin
export PATH


設定反映
$ source .bash_profile  


最終設定


「~/.bashrc」に記述していた内容を「~/.bash_profile」へ一部修正した上で移動
$ vi .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

# PATH=$PATH:$HOME/bin
# PATH=/usr/bin:/opt/remi/php70/root/usr/bin:/opt/remi/php70/root/usr/sbin${PATH:+:${PATH}}$HOME/bin:$HOME/.nodebrew/current/bin
PATH=/usr/bin:/opt/remi/php70/root/usr/bin:/opt/remi/php70/root/usr/sbin:$PATH:$HOME/bin:$HOME/.nodebrew/current/bin
export PATH

export LD_LIBRARY_PATH=/opt/remi/php70/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export MANPATH=/opt/remi/php70/root/usr/share/man${MANPATH:+:${MANPATH}}


[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*


設定反映
$ source .bash_profile  

$ echo $PATH
/usr/bin:/opt/remi/php70/root/usr/bin:/opt/remi/php70/root/usr/sbin:/home/★★/.rvm/gems/ruby-2.0.0-p247/bin:/home/★★/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/★★/.rvm/rubies/ruby-2.0.0-p247/bin:/usr/bin:/opt/remi/php70/root/usr/bin:/opt/remi/php70/root/usr/sbin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/★★/bin:/home/★★/.nodebrew/current/bin:/home/★★/.rvm/bin:/home/★★/bin:/home/★★/.nodebrew/current/bin


$ php -v
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/imagick.so' - /usr/lib64/php/modules/imagick.so: undefined symbol: zend_object_store_get_object in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mecab.so' - /usr/lib64/php/modules/mecab.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 7.1.2 (cli) (built: Feb 15 2017 08:51:17) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies


ハマッた点

 閲覧数:166 投稿日:2017-03-08 更新日:2017-03-08 

$PATH先頭に「/usr/bin/php」を表示せようとする


調査した結果
・「PHP 7.1.2」を実行しているファイルは「/usr/bin/php」であることが判明

コマンドラインでも「PHP 7.1.2」を表示させるためには?
・「echo $PATH」結果で、「/opt/remi/php70/root/usr/bin」よりも「/usr/bin/php」を先に表示させれば良い
・ここまではワリと早い段階で辿りついていたが、ここが誤りだった

正しくは?
・「echo $PATH」結果で、「/opt/remi/php70/root/usr/bin」よりも「/usr/bin」を先に表示させれば良い
・ファイル指定するわけではない
・必要なことはディレクトリへのパス指定

その旨のエラーを表示してくれないので
・気が付かない

経験値も足りないので
・「~/.bash_profile」だから?
・「~/.bashrc」の方が良い?
・それとも「…」?

結局
・朝8時開始して、今はもう17:43
・トイレ休憩だけ
・お昼はうどん食べながら意地になって原因究明しようとしていたし
・おかげで今日一歩も外出できなかったよ

未解決

 閲覧数:163 投稿日:2017-03-08 更新日:2017-03-08 

exit後ログインすると、$PATH表示順番が変更してしまう


「$ source .bash_profile」は上記と同等ではないの?  
「/usr/bin」を「/opt/remi/php70/root/usr/bin」より先に記述することが重要なので今回は影響ないが、この挙動は気持ちが悪い
$ echo $PATH
/home/★★/.rvm/gems/ruby-2.0.0-p247/bin:/home/★★/.rvm/gems/ruby-2.0.0-p247@global/bin:/home/★★/.rvm/rubies/ruby-2.0.0-p247/bin:/usr/bin:/opt/remi/php70/root/usr/bin:/opt/remi/php70/root/usr/sbin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/★★/bin:/home/★★/.nodebrew/current/bin:/home/★★/.rvm/bin


$ php -v
                                                                                                                                       
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/imagick.so' - /usr/lib64/php/modules/imagick.so: undefined symbol: zend_object_store_get_object in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mecab.so' - /usr/lib64/php/modules/mecab.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 7.1.2 (cli) (built: Feb 15 2017 08:51:17) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies


php.ini

 閲覧数:144 投稿日:2017-03-26 更新日:2017-03-26 

問題発生


時刻表示がおかしい
・色々調査した結果、「date.timezone」未設定であることが判明

phpinfo();
Default timezone UTC
phpinfo();
Directive Local Value Master Value
date.timezone no value no value
気が付いたこと
・「PHP 7.0.14 からバージョンアップ」したが、実質的には「PHP 7.1.2 新規インストール」だったので、 以前行った「php.ini」設定は再度必要


php.ini設定


▼/etc/php.ini
・ファイル内容が長い
・設定が面倒
・今後、バージョンアップの度に同じ作業が発生することを考慮すると、別ファイルとした方が良いと判断

▼/etc/php.d/personal_20170326.ini
・「/etc/php.d/」ディレクトリ内に任意のiniファイルを作成して別途読み込ませる方式を採用

$ sudo vi /etc/php.d/personal_20170326.ini
; タイムゾーン設定
date.timezone = "Asia/Tokyo"

; HTTPレスポンスの文字エンコーディングを設定
default_charset = "UTF-8"

; デフォルトの言語を日本語にする
mbstring.language = Japanese

; 内部エンコーディングを UTF-8 に設定
mbstring.internal_encoding = UTF-8

; HTTP 入力エンコーディング変換を UTF-8 に設定(UTF-8→UTF-8の変換)
mbstring.http_input = UTF-8

; HTTP 入力変換を有効にする
mbstring.encoding_translation = On

; 無効な文字は「?」に
mbstring.substitute_character = "?"



php.ini設定反映


Apache 再起動
$ sudo /etc/init.d/httpd restart


php.ini設定反映確認


$ php --ini
Configuration File (php.ini) Path: /etc
Loaded Configuration File: /etc/php.ini
Scan for additional .ini files in: /etc/php.d
Additional .ini files parsed: /etc/php.d/20-bcmath.ini,
/etc/php.d/20-bz2.ini,
/etc/php.d/20-calendar.ini,
/etc/php.d/20-ctype.ini,
/etc/php.d/20-curl.ini,
/etc/php.d/20-dom.ini,
/etc/php.d/20-exif.ini,
/etc/php.d/20-fileinfo.ini,
/etc/php.d/20-ftp.ini,
/etc/php.d/20-gd.ini,
/etc/php.d/20-gettext.ini,
/etc/php.d/20-iconv.ini,
/etc/php.d/20-intl.ini,
/etc/php.d/20-json.ini,
/etc/php.d/20-mbstring.ini,
/etc/php.d/20-mcrypt.ini,
/etc/php.d/20-mysqlnd.ini,
/etc/php.d/20-pdo.ini,
/etc/php.d/20-phar.ini,
/etc/php.d/20-posix.ini,
/etc/php.d/20-shmop.ini,
/etc/php.d/20-simplexml.ini,
/etc/php.d/20-soap.ini,
/etc/php.d/20-sockets.ini,
/etc/php.d/20-sqlite3.ini,
/etc/php.d/20-sysvmsg.ini,
/etc/php.d/20-sysvsem.ini,
/etc/php.d/20-sysvshm.ini,
/etc/php.d/20-tidy.ini,
/etc/php.d/20-tokenizer.ini,
/etc/php.d/20-xml.ini,
/etc/php.d/20-xmlwriter.ini,
/etc/php.d/20-xsl.ini,
/etc/php.d/30-mysqli.ini,
/etc/php.d/30-pdo_mysql.ini,
/etc/php.d/30-pdo_sqlite.ini,
/etc/php.d/30-wddx.ini,
/etc/php.d/30-xmlreader.ini,
/etc/php.d/30-xmlrpc.ini,
/etc/php.d/40-apcu.ini,
/etc/php.d/40-zip.ini,
/etc/php.d/50-apc.ini,
/etc/php.d/50-mysql.ini,
/etc/php.d/ds.ini,
/etc/php.d/imagick.ini,
/etc/php.d/mecab.ini,
/etc/php.d/personal_20170326.ini,
/etc/php.d/xdebug.ini


<?php
phpinfo()

phpinfo();
Default timezone Asia/Tokyo
phpinfo();
Directive Local Value Master Value
date.timezone Asia/Tokyo Asia/Tokyo


php.ini


PHP7.1 インストール失敗 / CentOS 6

PHP Version 7.1.2 エクステンション対応 / PHP 7.0.14 からのアップグレード対応 



類似度ページランキング
順位 ページタイトル抜粋
1 PHP Version 7.1.2 エクステンション対応 / PHP 7.0.14 からのアップグレード対応  49
2 PHP Version 7.1.2 Xdebugエクステンション対応 / PHP 7.0.14 からのアップグレード  48
3 PHP Version 7.1.2 php-mecabエクステンション対応 / PHP 7.0.14 からのアップグレード  47
4 MySQL5.7.17インストール / MySQL5.6.34 からのバージョンアップ対応  46
5 PHP7.1 インストール失敗 / CentOS 6 45
6 uwsgi 2.0.17 インストール /usr/bin/python3.6 CentOS7 43
7 PHP Version 7.1.2 Data Structuresエクステンション対応 40
8 「CentOS 7」へ「ChromeDriver 79.0.3945.36」を新規インストール 39
9 申込→公開10.Python 2.7.3 インストール / make install 38
10 Go1.9.2インストール /usr/local/go/bin/go CentOS6 38
11 Python 3.6.4 を CentOS7 へ yumインストール /usr/bin/python3.6 38
12 7回目-12.Go1.10インストール /usr/local/go/bin/go CentOS7 38
13 Go1.10.1インストール /usr/local/go/bin/go CentOS7 38
14 「CentOS 7」へ「Google Chrome 76.0.3809.132」を新規インストール 38
15 pipアップグレード 7.1.0 → 9.0.1 / CentOS6 38
16 CentOS 7 へ wkhtmltopdf 0.12.5 を新規インストール 37
17 2回目-1.さくらVPSを起動 / OSインストール  36
18 4回目-1.さくらVPSを起動 / OSインストール  36
19 ソースからビルドしたPython 2.7.3 アンインストール失敗 36
20 phpMyAdmin-4.6.3 インストール / phpMyAdmin4.5.5.1からのアップデート -2- 36
2021/9/21 11:28 更新
週間人気ページランキング / 9-14 → 9-20
順位 ページタイトル抜粋 アクセス数
1 PHPのmb_send_mail関数でメール送信できない | メール処理システム 29
2 Nginx設定。エラーログレベル | Nginx(Webサーバ) 21
3 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 11
4 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 10
5 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 9
6 PHP Version 7.1.2 php-mecabエクステンション対応 / PHP 7.0.14 からのアップグレード  | MeCab(形態素解析) 8
6 ソースからビルドしたPython 2.7.3 アンインストール失敗 | Python(プログラミング言語) 8
7 touch コマンド / viコマンド。新規ファイル作成時の違い | Linuxコマンド 7
7 さくらVPS0 7
8 9回目-13.MySQL5.7.21設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 6
8 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 6
9 PHPファイルでchmodエラー | PHP(プログラミング言語) 5
9 設定 2019/1/22 / 一般ユーザがmailコマンドでメール送信 / 管理者がmailコマンドでメール送信 5
10 Postfix | メール処理システム 4
10 CentOSでcpコマンド動作確認するためには、Control + T ではなく、 -v オプションを使用 | cp(Linuxコマンド) 4
10 499 (Request has been forbidden by antivirus) | HTTP(通信プロトコル) 4
10 tar | Linuxコマンド 4
10 Python 3.6 インストール / make altinstall | Python(プログラミング言語) 4
10 「CentOS6」から「CentOS7」への移行 | CentOS 7 (CentOS) 4
10 echo と cat の違い 4
2021/9/21 1:01 更新