LoginSignup
5
5

More than 5 years have passed since last update.

Check! Bluemix PHPランタイムでPHPエクステンションを追加したいときは?

Last updated at Posted at 2017-08-10

こんばんは、 @dz_ こと大平かづみです。

Prologue - はじめに

Bluemix の Cloud Foundry アプリで、PHPスターター・アプリケーション を利用して WordPress を立てようとした際、 mysql_connect() がないよ!と不意打ちなエラーにつまずきましたので、対処したメモを残しておきます。

Bluemix PHPスターター・アプリケーションについて

Bluemix の PaaS は、Cloud Foundry をベースとしており、PHP ランタイムの構築には php_buildpack が採用されています。

ビルドパックを利用することで、手間なく環境を構築してくれるメリットとともに、基本の構成からカスタマイズするには、少し工夫が必要です。

PHP拡張について

php_buildback は、デフォルトの場合、 bz2, zlib, curl, mcrypt などの最小限の PHPエクステンションをインストールします。

ここに含まれていないPHPエクステンションを利用したい場合は、明示的に含める必要があります。この記事では、追加の PHP エクステンションを指定する方法をまとめます。

Bluemix PHPスターター・アプリケーションで、 mysql_connect() がない場合の対処

エラー内容

Bluemix PHPスターター・アプリケーションを作成し、 WordPress のソースコードを配置して動かそうした際、下記のエラーが発生しました。

Fatal error: Call to undefined function mysql_connect() in /home/vcap/app/htdocs/wordpress/wp-includes/wp-db.php on line 1568

原因

Bluemix PHPスターター・アプリケーションのビルドパックには、どうやら mysql_connect() を含む mysqli のPHPエクステンションが含まれていないようです。

対処

PHPエクステンションを設定するには、 options.json に指定します。

まず、Bluemix が必要とする最小の options.json は以下のようです。Bluemix では、少なくとも WEBDIR を指定する必要があります。また、上記のデフォルトの options.json に指定されているPHPエクステンションもピックアップしておきます。

.bp-config/options.json(デフォルト)
{
    "WEBDIR": "htdocs",
    "PHP_EXTENSIONS": ["bz2", "zlib", "curl", "mcrypt"],
}

ここに、必要なPHPエクステンションを追加します。どんな拡張モジュールが利用できるかは、下記の options.json を参照してください。

たとえば、 mysqli を追加する場合はこうなります。

.bp-config/options.json(mysqliを追加)
{
    "WEBDIR": "htdocs",
-   "PHP_EXTENSIONS": ["bz2", "zlib", "curl", "mcrypt"],
+   "PHP_EXTENSIONS": ["bz2", "zlib", "curl", "mcrypt", "mysqli"]
}

そして、これをアプリケーションのディレクトリに .bp-config/options.json として配置しデプロイすることで適用されます。

ということで、PHPエクステンションを追加するのは、実はこんなに簡単でしたー!(o'ω')ノ

Epilogue - おわりに

当初、エラー発生時は諦めそうになりましたが、解決策がわかって、Cloud Foundry の仕組みもわかって一石二鳥でした♪

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5