質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

Q&A

解決済

3回答

6991閲覧

Linux環境で、PHP extensionを有効化したい

YO14

総合スコア45

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

0グッド

1クリップ

投稿2018/07/30 09:39

編集2018/07/31 00:47

前提・実現したいこと

PHPで、Linux環境にとあるシステムを設置するにあたって、
composerをインストールし、Laravelコマンドであるphp artisan key:generateを実行したいです。
(composer.jsonが予め用意されており、Laravelもインストールの対象に設定されています)

が、現状、以下記載するエラーが発生します。ネットで調べましたが、古い情報が多く問題解決できていません。
ご存じの方、ご教示宜しくお願いいたします。

発生している問題・エラーメッセージ

composer installを実行したところ、以下のようなエラーが発生します。

Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for laravel/framework v5.2.39 -> satisfiable by laravel/framework[v5.2.39]. - laravel/framework v5.2.39 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system. Problem 2 - Installation request for league/commonmark 0.13.4 -> satisfiable by league/commonmark[0.13.4]. - league/commonmark 0.13.4 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system. Problem 3 - Installation request for simplesoftwareio/simple-qrcode 1.3.3 -> satisfiable by simplesoftwareio/simple-qrcode[1.3.3]. - simplesoftwareio/simple-qrcode 1.3.3 requires ext-gd * -> the requested PHP extension gd is missing from your system. Problem 4 - laravel/framework v5.2.39 requires ext-mbstring * -> the requested PHP extension mbstring is missing from your system. - roumen/feed v2.10.4 requires illuminate/support ^5.0 -> satisfiable by laravel/framework[v5.2.39]. - Installation request for roumen/feed v2.10.4 -> satisfiable by roumen/feed[v2.10.4].

試したこと

mbstringがPHPの拡張機能であり、それが私のシステムで有効化されていない為にエラーが発生している、と読み取れましたので、インターネットにて関連していそうな情報を集め、
「php.iniにおいて、;extension=php_mbstring.dllのセミコロンを外し、httpdを再起動する」という記述を発見しました。
実際は、サーバーのphp.iniには上記の記載がなかったため、セミコロンを外すのではなく新規に記載しました。
また、実際はサーバーにはphp.iniとphp7.0.iniと2つあったため、両方に同じ事を行いました。

しかし、結果として全く同じエラーメッセージが出現します。

補足情報(FW/ツールのバージョンなど)

PHP7.0.3
Composer1.6.5
Linuxのディストリビューション・・・Amazon LInux AMI

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/07/30 14:33

linux のディストリビューションを明記してください。
YO14

2018/07/31 00:46

` cat /etc/issue `を実行したところ、Amazon Linux AMIでした。
guest

回答3

0

ベストアンサー

まず、PHPが読み込んでいる ini ファイルがどこにあるのかを特定します。

bash

1php --ini

で、読み込まれている ini ファイルが一覧で出力されます。

これは、私が使っている環境(Amazonではありません)での出力です。

bash

1$ php --ini 2 3Configuration File (php.ini) Path: /etc 4Loaded Configuration File: /etc/php.ini 5Scan for additional .ini files in: /etc/php.d 6Additional .ini files parsed: /etc/php.d/10-opcache.ini, 7/etc/php.d/15-xdebug.ini, 8/etc/php.d/20-bcmath.ini, 9/etc/php.d/20-bz2.ini, 10/etc/php.d/20-calendar.ini, 11/etc/php.d/20-ctype.ini, 12/etc/php.d/20-curl.ini, 13/etc/php.d/20-dom.ini, 14/etc/php.d/20-exif.ini, 15/etc/php.d/20-fileinfo.ini, 16/etc/php.d/20-ftp.ini, 17/etc/php.d/20-gd.ini, 18/etc/php.d/20-gettext.ini, 19/etc/php.d/20-gmp.ini, 20/etc/php.d/20-iconv.ini, 21/etc/php.d/20-imap.ini, 22/etc/php.d/20-intl.ini, 23/etc/php.d/20-json.ini, 24/etc/php.d/20-ldap.ini, 25/etc/php.d/20-mbstring.ini, 26/etc/php.d/20-mysqlnd.ini, 27/etc/php.d/20-pdo.ini, 28/etc/php.d/20-phar.ini, 29/etc/php.d/20-posix.ini, 30/etc/php.d/20-shmop.ini, 31/etc/php.d/20-simplexml.ini, 32/etc/php.d/20-sockets.ini, 33/etc/php.d/20-sqlite3.ini, 34/etc/php.d/20-sysvmsg.ini, 35/etc/php.d/20-sysvsem.ini, 36/etc/php.d/20-sysvshm.ini, 37/etc/php.d/20-tokenizer.ini, 38/etc/php.d/20-xml.ini, 39/etc/php.d/20-xmlwriter.ini, 40/etc/php.d/20-xsl.ini, 41/etc/php.d/30-mysqli.ini, 42/etc/php.d/30-pdo_mysql.ini, 43/etc/php.d/30-pdo_sqlite.ini, 44/etc/php.d/30-wddx.ini, 45/etc/php.d/30-xmlreader.ini, 46/etc/php.d/40-apfd.ini, 47/etc/php.d/40-imagick.ini, 48/etc/php.d/40-oauth.ini, 49/etc/php.d/40-propro.ini, 50/etc/php.d/40-raphf.ini, 51/etc/php.d/40-smbclient.ini, 52/etc/php.d/40-zip.ini, 53/etc/php.d/50-http.ini, 54/etc/php.d/50-json_post.ini, 55/etc/php.d/crack.ini, 56/etc/php.d/opcache.ini, 57/etc/php.d/phalcon.ini, 58/etc/php.d/subversion.ini, 59/etc/php.d/uploadprogress.ini, 60/etc/php.d/xhprof.ini

読み込まれている ini ファイルは、ご覧のように、php.ini だけではありません。

/etc/php.d/ ディレクトリ以下にも、様々なファイルがあることがわかりますね。

mbstring がインストールされていれば、/etc/php.d/20-mbstring.ini が出力されると思います。
インストールされていないのであれば、インストールする必要があります。

インストールされているかどうかを確認します。

bash

1$ yum list installed | grep mbstring 2php-mbstring.x86_64 7.1.20-1.el6.remi @remi-php71 // 出力される。インストールされていない場合は何も出力されない。

インストールされていない場合、パッケージを検索します。

bash

1$ yum search mbstring 2読み込んだプラグイン:fastestmirror, security 3Repository pgdg93 is listed more than once in the configuration 4Repository pgdg93-source is listed more than once in the configuration 5Determining fastest mirrors 6 * base: ftp.iij.ad.jp 7 * epel: mirror.dmmlabs.jp 8 * extras: ftp.iij.ad.jp 9 * remi: ftp.riken.jp 10 * remi-php70: ftp.riken.jp 11 * remi-php71: ftp.riken.jp 12 * remi-safe: ftp.riken.jp 13 * rpmforge: ftp.riken.jp 14 * updates: ftp.iij.ad.jp 15Webmin 119/119 16epel 12516/12516 17wandisco-svn 115/115 18================================================== N/S Matched: mbstring ================================================== 19php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling 20php54-php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling 21php55-php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling 22php56-php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling 23php70-php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling 24php71-php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling 25php72-php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling 26php73-php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling 27 28 Name and summary matches only, use "search all" for everything.

お使いのPHPバージョンが7.0 ということなので、この場合、php70-php-mbstring をインストールすれば良いことがわかります。

bash

1$ yum install php70-php-mbstring

を実行すれば良いことがわかりますね。

投稿2018/07/31 04:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YO14

2018/07/31 07:33

ありがとうございます。 ご回答いただいた内容を参考にし、mbstringをインストールすることができました。
退会済みユーザー

退会済みユーザー

2018/07/31 07:35

解決したようで何よりです。
guest

0

Linux 環境なら共有ライブラリは .dll ではなくて .so です。
参考にされたサイトは Windows 用の記述ですね。

というわけで、追加した記述は意味がありません。
普通 mbstring のロード記述はあるはずなので、探してコメントを外してみてください。
※mbstring で php.ini を検索してみるのです

投稿2018/07/30 10:41

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/07/30 12:43

yum など リポジトリからphpだけをインストールしたものにはないですよ。 [root@2964a2c33157 /]# php -m [PHP Modules] bz2 calendar Core ctype curl date exif fileinfo filter ftp gettext hash iconv json libxml openssl pcntl pcre Phar readline Reflection session sockets SPL standard tokenizer zlib [Zend Modules] [root@2964a2c33157 /]# cat /etc/php.ini | grep extension= ; extension=modulename.extension ; extension=msql.dll ; extension=msql.so ; extension=/path/to/extension/msql.so [root@2964a2c33157 /]#
YO14

2018/07/31 00:58

PHPは、yum install php php-mbstring php-pear php-fpm php-mcrypt php-mysqlを実行してインストールしました。 おっしゃる通り、php.ini内に、extension=mbstring的な記述はありません。どこを探して修正すべきでしょうか。
退会済みユーザー

退会済みユーザー

2018/07/31 07:34 編集

間違って投稿したので削除です。
guest

0

「php.iniにおいて、 ;extension=php_mbstring.dll のセミコロンを外し、httpdを再起動する」という記述を発見しました。 実際は、サーバーのphp.iniには上記の記載がなかったため、セミコロンを外すのではなく新規に記載しました。

php.iniのphp_mbstring.dllの有効化だけではなく、php-mbstringをインストールされているか確認する必要があります。

Linuxのディストリビューション(UbuntuとかCentOSとか)がご質問の内容だけでは把握できないので、このコマンドと示ませんが、UbuntuとCentOSのPHP(とmbstringなど)のインストールの一例の記事を挙げてみます。

Ubuntu
https://qiita.com/yamatmoo/items/b9e8035c55032de88084
CentOS
https://qiita.com/ozawan/items/caf6e7ddec7c6b31f01e

投稿2018/07/30 10:00

balaenoptera

総合スコア222

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YO14

2018/07/31 00:59

ご回答ありがとうございます。Linuxのディストリビューションは、Amazon Linuxでした。 ご提示いただいた記事だとどちらを参照すればよろしいでしょうか。
balaenoptera

2018/07/31 03:20 編集

AmazonLinuxだと↓とかでどうしょうか https://lab.maro-log.net/post-12390/ (手順中yum list php7.1* => yum list php71*としてください) おそらくCentOSの方でもできると思いますが、こちらでもmbstringのインストールができると思います。
YO14

2018/07/31 07:33

ありがとうございます。参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問