PHP 7が昨日登場したので、試してみたいと思います。
PHP 7.0.0では、Zend Engineが新しくなり、以下のような数々の改良や新機能が搭載されています。
- パフォーマンスの向上。PHP 7は、PHP 5.6に比べて最大2倍の速度を実現しています。
- メモリ使用量の大幅な削減
- 抽象構文ツリー
- 一貫した 64 ビットサポート
- 例外階層の改善
- 多くの致命的なエラーが例外に変換されました
- 安全な乱数生成器
- 古い、サポートされていないSAPIおよび拡張機能の削除
- ヌルの合体演算子 (??)
- リターンおよびスカラ型の宣言
- 匿名クラス
- ゼロコストアサート となっています。 php.net
現在のUbuntuバージョンにインストールすることは可能でしょうか?
現在の制限や既知の互換性の問題はありますか?
次のようにすることができます。
sudo apt-get install python-software-properties software-properties-common
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
sudo apt-get update
オプションで PHP 5 をパージします。
sudo apt-get remove php5-common -y
または、設定ファイルを含めて直接パージします。
sudo apt-get purge php5-common -y
そして最後にPHP 7をインストールします。
sudo apt-get install php7.0 php7.0-fpm php7.0-mysql -y
オプションで、不要なパッケージを後からクリーンアップします。
sudo apt-get --purge autoremove -y
あるいは、このスクリプトscriptやこのblogの指示に従って、ソースからPHP 7.0をインストールすることもできます。
EDIT:
Ubuntu 16.4では、デフォルトのPHPとしてPHP5がPHP7に置き換えられました。
sudo apt-get install php7.0
または
sudo apt-get install php
[3]: https://www.symfony.fi/entry/php-7-included-in-ubuntu-16-04-lts-xenial-xerus
2つの選択肢があります。
PHP7を含むUbuntuの新バージョンが出るまで待つ。
Ubuntuは、既存のUbuntuバージョンに対してほとんどのソフトウェアのメジャーな新バージョンのリリースを行いません。メジャーな新バージョンのリリースを受けるには、Ubuntuの新しいバージョンまで待つ必要があります。
PPAなどからサードパーティのバージョンをインストールする。
PPAはUbuntuのリリーススケジュールやポリシーに拘束されないため、より頻繁にバージョンを変更するなどの自由があります。 Tshilidzi Mudau'さんの回答にあるPPAは、PHPをより最新の状態に保つための一般的な方法です。
sudo add-apt-repository ppa:ondrej/php
PPAは、Ubuntuが提供するバージョンのようにUbuntuの公式サポートを受けられませんし、スケジュールやポリシーが異なるため、品質やセキュリティの基準が異なる場合があります。 この場合、このPPAを公開している開発者は、ここのコミュニティではよく知られています。
私のUbuntu 15.10サーバーでは、上記の方法ではうまくいかなかったので、他の方の参考になればと思い、うまくいった方法をご紹介します。
まず、PHP 5の主要モジュールを削除しなければなりませんでした。
sudo apt-get -y purge php5 libapache2-mod-php5 php5 php5-cli php5-common php5-curl php5-gd php5-imap php5-intl php5-json php5-mcrypt php5-mysql php5-pspell php5-readline php5-sqlite
次に、残されたいくつかの余分なものを削除しました。
sudo apt-get autoremove
次に、PHP 7.0をインストールします。
sudo apt-get install php7.0
その後、PHPMyAdminを削除すると、Apache2が起動しなくなり、設定ファイルを削除しなければなりませんでした(代わりに移動させることもできました)。
sudo rm /etc/apache2/conf-enabled/phpmyadmin.conf
そして、Apache2を再起動しなければなりませんでした。
sudo service apache2 restart
PHP 7.0が動作しました(PHPINFO();
で確認)。
しかし、PHPMyAdminを動作させるには、手動でインストール/アップグレードするしかないことがわかりました。そうしないと、ソースから入手できる最新バージョンはまだPHP 7をサポートしていないからです。
**EDIT: PHPMyAdminをGITからクローンしたり、ソースから手動でコンパイルしたりすることなく、互換性のあるバージョンにアップデートする方法を見つけたので、以下に追加します。
まずこのリポジトリを追加し、ソースリストを更新してアップグレードします(注意: PHP7へのアップグレード中に削除された場合は、アップグレードではなくインストールする必要があります)。
sudo add-apt-repository ppa:nijel/phpmyadmin
sudo apt-get update
sudo apt-get dist-upgrade
しかし、(私のサーバーでの)インストール中に、データベースアップグレードスクリプト upgrade_column_info_4_3_0+.sql
を実行しなければなりませんでしたが、これが以下のエラーで失敗しました。
mysql said: ERROR 1060 (42S21) at line 28: Duplicate column name 'input_transformation'
私はこのエラーを無視してアップグレードを完了することにしました。
インストール後、/usr/share/phpmyadmin/sql/upgrade_column_info_4_3_0+.sql
にある .sql アップグレードスクリプトを開きました。
スクリプトを手動で実行して、すでに存在する2つのカラムを作成しようとしている2つの問題のある行を削除しました(削除するコード)。
ALTER TABLE `pma__column_info`
ADD `input_transformation` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '',
ADD `input_transformation_options` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '';
最後に、/etc/phpmyadmin/config.inc.php
にある設定ファイルを編集し、以下の2行を追加しました。
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
この後、PHPMyAdminは正常にアップデートされ、拡張機能が有効になります。 ご参考になれば幸いです。