VPS 上の Ubuntu 14.04 で php5 から php7 へアップデートした

シェアする

いい加減 php のバージョンを 5 から 7 へ変えようということでさくっとアップデートした。

サーバはさくらの VPS 上にインストールした Ubuntu 14.04 だ。/etc/os-release は以下のようになっている。

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="14.04.1 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.1 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

httpd には apache2 を使用している。

Sponsored Links

php7 へのアップグレード方法

DigitalOcean のアップグレード記事を参考にした。

最初にリポジトリを追加する。

$ sudo add-apt-repository ppa:ondrej/php
sudo: add-apt-repository: command not found

add-apt-repository というコマンドが無いと言われたので先に software-properties-common を入れる。

$ sudo apt-get install software-properties-common

これで先程のコマンドが動く。

$ sudo add-apt-repository ppa:ondrej/php
(ry)
OK
$ sudo apt-get update
$ sudo apt-get install php7.0
$ sudo apt-get install php7.0-mysql

ここまでやれば php7 のインストールはできたので php コマンドを打てば php7 が使える。

$ php -v
PHP 7.0.13-1+deb.sury.org~trusty+1 (cli) ( NTS )

ところがこの状態で apache2 を再起動しても反映されず、php5 を使い続ける。PHP7 を使うには php5 の設定を削除し、PHP7 を読み込むようにする必要がある。

これは単純に apache のモジュールの有効/無効を切り替えるだけで良い。

$ sudo a2dismod php5
$ sudo a2enmod php7.0

a2enmod 及び a2dismod コマンドを使用すると簡単に Apache モジュールの有効/無効を切り替える事ができるので便利だ。

$ sudo service apache2 restart

この状態で phpinfo などを表示すれば php 7 と表示されるはずだ。

my-ubuntu-get-php7

必要なパッケージのインストール

ただこれだけだと使用しているスクリプトによってはエラーが出るだろう。Apache のエラーログを見ながら足りないものを追加していく。

PHP Fatal error: Uncaught Error: Call to undefined function mb_convert_encoding()

マルチバイト系の関数が動いて無さそうなので php7.0-mbstring を入れる。

$ sudo apt-get install php7.0-mbstring

PHP Fatal error: Uncaught Error: Class 'DOMDocument' not found

XML がうまくパースできていなさそうだったので php7.0-xml も入れた。

$ sudo apt-get install php7.0-xml

PHP Fatal error: Uncaught Error: Call to undefined function imagecreate()

GD が入ってないとこんな感じのエラーメッセージが出る。php7.0-gd も入れよう。

$ sudo apt-get install php7.0-gd

PHP Fatal error: Uncaught Error: Call to undefined function json_encode()

json も入れてやる。

$ sudo apt-get install php7.0-json

PHP Fatal error: Uncaught Error: Call to undefined function curl_init()

curl も無いと言われた。

$ sudo apt-get install php7.0-curl
Sponsored Link

シェアする

フォローする