Help us understand the problem. What is going on with this article?

Amazon Linuxでphpでmbstringを使う

More than 3 years have passed since last update.

しょぼい記事ですみません。

環境

Amazon EC2 / AWS
Linux ip-xxx-xx-xx-xx 4.9.17-8.31.amzn1.x86_64
実行日: 2017-04-13
バージョン: php7
ディストリビューションは、amazon linux (CentOSベースの無償のもの)

事前に、以下の手順にそってインストール
http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/install-LAMP.html

困ったこと

頂き物のphpを動かしてみたら、エラーログでmb_substrがないと怒られる。。

[Thu Apr 13 02:05:37.287787 2017] [:error] [pid 32557] [client xxx.xxx.xxx.xxx:61072] PHP Fatal error:  Uncaught Error: Call to undefined function mb_substr() in /var/www/html/xxx/xxx.php:82\nStack trace:\n#0 {main}\n  thrown in /var/www/html/xxx/xxx.php on line 82, referer: http://xxx.xxx.xxx.xxx/xxx/top.php

現状確認

mbモジュールが入ってないっぽい。

[root@ip-xxx-xx-xx-xx etc]# php -m
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
zlib

[Zend Modules]

解決策

yumでインストール

[root@ip-xxx-xx-xx-xx php.d]# php -v
PHP 7.0.16 (cli) (built: Mar  6 2017 19:45:42) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies

[root@ip-xxx-xx-xx-xx php.d]# yum list | grep "\-mbstring"
php-mbstring.x86_64                     5.3.29-1.8.amzn1               amzn-main
php54-mbstring.x86_64                   5.4.45-1.75.amzn1              amzn-main
php55-mbstring.x86_64                   5.5.38-2.119.amzn1             amzn-main
php56-mbstring.x86_64                   5.6.30-1.133.amzn1             amzn-main
php70-mbstring.x86_64                   7.0.16-1.21.amzn1              amzn-main

[root@ip-xxx-xx-xx-xx php.d]# yum install php70-mbstring.x86_64
読み込んだプラグイン:priorities, update-motd, upgrade-helper
1004 packages excluded due to repository priority protections
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ php70-mbstring.x86_64 0:7.0.16-1.21.amzn1 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==================================================================================================================
 Package                      アーキテクチャー     バージョン                       リポジトリー             容量
==================================================================================================================
インストール中:
 php70-mbstring               x86_64               7.0.16-1.21.amzn1                amzn-main               1.3 M

トランザクションの要約
==================================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 1.3 M
インストール容量: 2.7 M
Is this ok [y/d/N]: y
Downloading packages:
php70-mbstring-7.0.16-1.21.amzn1.x86_64.rpm                                                | 1.3 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : php70-mbstring-7.0.16-1.21.amzn1.x86_64                                           1/1 
  検証中                  : php70-mbstring-7.0.16-1.21.amzn1.x86_64                                           1/1 

インストール:
  php70-mbstring.x86_64 0:7.0.16-1.21.amzn1                                                                       

完了しました!

# ここで再起動
[root@ip-xxx-xx-xx-xx php.d]# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

動作確認

[root@ip-xxx-xx-xx-xx php.d]# php -m | grep mb
mbstring

めでたしめでたし。

ちなみに、設定ファイル(/etc/phpini)は、以下のサイトを参考にしました。
http://qiita.com/yamaguchi_takashi/items/d4b7b2693b42679dc3ae
(バージョンは違いますが、mbstringについてはほとんど同じです。)

osada
しがない通信プロトコル研究者です。専門は輻輳制御。緑色の金融機関でサイバーセキュリティや仮想通貨にも取り組んでいます。CISSP, Ph.D.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした