開発したアプリなど一覧

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 を使用している。

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

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

https://www.digitalocean.com/community/tutorials/how-to-upgrade-to-php-7-on-ubuntu-14-04

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

$ 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

http://askubuntu.com/questions/593433/error-sudo-add-apt-repository-command-not-found

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

$ 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

コメント

タイトルとURLをコピーしました