web-dev-qa-db-ja.com

最新のPHP ubuntu 16.04のバージョンにアップグレードします

サーバーで NextCloud を使用しており、NextCloudから次のように通知されます。

現在PHP _7.0.32-0ubuntu0.16.04.1_を実行しています。PHPバージョンをアップグレードして、PHPディストリビューションがそれをサポートしたらすぐにグループ化します。

そこで、次のコマンドを実行してOS(Ubuntu 16.04)をアップグレードしようとしました。

_apt-get update apt-get dist-update_

次に、サーバーを再起動し、上記のコマンドを再実行しました。これらすべての後、ターミナルから接続すると、次のようになります。

_Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-83-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

0 packages can be updated.
0 updates are security updates.
_

私のPHPバージョンはまだPHP 7.0.32-0ubuntu0.16.04.1 (cli) ( NTS )です。

つまり、PHP 7.0.32は、ubuntu 16.04にインストールできる最新バージョンです。

11
yaylitzis

デフォルトのPHPバージョンは7.0です。16.04にPHPの新しいバージョンをインストールする場合は、追加のPPAを使用する必要があります(を以下に示します)。または、自分でコンパイルする必要があります。

Ubuntu 16.04を搭載した私のサーバーは現在PHP 7.2を使用しており、WordPressおよびMediaWikiの運用インスタンスがいくつかあります。WebサーバーはApache 2.4です。私が使用するコマンドPHP 7.0から7.2への移行に使用されたものは次のとおりです:

# Add the repository 'ppa:ondrej/php'
Sudo apt-get install software-properties-common
Sudo add-apt-repository ppa:ondrej/php
Sudo apt update

# Install PHP 7.2
Sudo apt install -y php7.2 php7.2-cli libapache2-mod-php7.2
Sudo apt install -y php-imagick php-gettext php-memcache php-apcu php-pear php-xml php-xmlrpc
Sudo apt install -y php-memcached php-mysql php-intl php-mbstring php-curl php-Gd php-imagick
Sudo apt install -y php7.2-common php7.2-mysql php7.2-cgi 
Sudo apt install -y php7.2-curl php7.2-Zip php7.2-mbstring php7.2-xmlrpc php7.2-Gd php7.2-xml php7.2-xsl
Sudo apt install -y php7.2-dev php7.2-bz2 php7.2-intl php7.2-json php7.2-opcache php7.2-readline 
Sudo apt install -y php7.2-imap php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-bcmath #php7.2-mcrypt

# Update the Apache's PHP version
Sudo a2dismod php7.0
Sudo a2enmod php7.2
Sudo systemctl restart Apache2.service

# Update the CLI PHP version
Sudo update-alternatives --set php /usr/bin/php7.2

リポジトリppa:ondrej/php PHP 7.3も利用可能です。この最新バージョンにすぐに移行する予定です。ここに、私の追加の/etc/php/7.2/Apache2/php.iniいくつかのWordPressおよびMediaWikiのマニュアルに従って作成されています:

zlib.output_compression = On
max_execution_time = 600
max_input_vars = 3000
memory_limit = 512M
post_max_size = 256M
upload_max_filesize = 128M
allow_url_fopen = Off
pcre.backtrack_limit=1000000
session.cookie_secure = True
session.gc_maxlifetime = 14400
session.cache_expire = 540
mbstring.encoding_translation = On

2019年4月4日更新

上記のコマンドセットを使用して、Ubuntu 16.04にPHP 7.をインストールしましたが、すべて正常に動作しました。7.2を置き換えるだけです。 これらのコマンド内で7.3を使用-プロセス全体で約7分かかりました。


2020年2月更新

私はPHP 7.4に移行しましたが、すべてが順調に進みました。そのプロセスの間、次の手順を使用しました(注、現時点ではNextCloudはphp7をサポートしていません) .4まだ):

# Absolutely mandatory step
Sudo apt update
# Generate list of php7.4 packages on tbe base of the installed 7.3 ones
# Remove 'echo' to install the packages
for pkg in $(Sudo apt-cache policy *php7.3* | grep -P '^(lib.*|php)7.3.*:$' | sed -e 's/:$//' -e 's/7.3/7.4/');
do
    echo Sudo apt install "$pkg" -y;
done 2>/tmp/php7.4.install.error.log
# Inspect the error log for some fatal errors, 
# Some old dependencies could missing - it's normal
cat /tmp/php7.4.install.error.log
# Mandatory step; If there is a trouble, tray: Sudo apt install -f
Sudo apt update && Sudo apt upgrade
# Create a backup copy of the new php.ini 
Sudo cp /etc/php/7.4/Apache2/php.ini{,.default}
# Compare the old and the new php.ini files
# Apply the necessary changes to 7.4/Apache2/php.ini
# Compare the files again in order to inspect for typos 
colordiff --side-by-side --left-column --width=240 --show-c-function /etc/php/7.{3,4}/Apache2/php.ini
# Switch the version within Apache
Sudo a2dismod php7.3 && Sudo a2enmod php7.4
Sudo systemctl restart Apache2
16
pa4080

新しいものを手動でインストールできます。しかし、一般的に、更新を手動でダウンロードして再度ビルドする必要があるため、そうしたくはありません。

LTSリリースのポイントは安定性です。 PHP 18.04に本日出荷されたバージョンは、バージョンをアップグレードしなくても5年間セキュリティ更新で維持されます。これは、現在のバージョンに依存するプログラムで問題を引き起こす可能性があります。

18.04にはPHP 7.2が利用可能です。どちらも5年間のサポート期間を持つLTSリリースであるため、16.04からの良いアップグレードパスになる可能性があります。

セキュリティに関しては、このバージョンに依存しないでください。 UbuntuメンテナーとDebianメンテナーは、これらの5年間、アップストリームからサポートされているパッケージにセキュリティパッチをバックポートします。

2
vidarlo