web-dev-qa-db-ja.com

Yumを使用してCentOSで最新のPHP=バージョンにアップグレードするにはどうすればよいですか?

これに関するブログ投稿をいくつか見つけましたが、副作用の可能性についての説明が不足しています。

これらの手順の詳細を実際に使用できます:

  1. PHP 5.4を提供するリポジトリをyumに追加する方法
  2. これはCentOSの現在のPHPバージョンをシームレスに置き換えることができますか?
  3. PHP 5.4?をサポートしている場合、公式リポジトリに戻すにはどうすればよいですか?(私のシステムでは現在5.3.3)
  4. PHP現在使用しているモジュールを壊す可能性はありますか?

人々は新しいバージョンで同じ方法で正常にアップグレードし、問題の特定のバージョンを削除することを提案しています。新しいバージョンが実際に何かを壊した場合に備えて、バージョンをピン留めするのは良いことですが、コミュニティから提案された最新の成功したバージョンをメモとして残しておきたいと思います。

他のバージョンへのアップグレードが成功した場合は、遠慮なく更新してください。

  • PHPバージョン:5.4、5.5、5.6
  • CentOSバージョン:5、6
22
Vicary

Fedora 17/16にApache/PHP 5.4.10をインストール、CentOS/RHEL 6.3/5.8 の指示に従い、少し変更しました。多分10分かかりました。私の正確なコマンドを以下に示します。最初のコマンドは、記事に示されているものから変更する必要があることに注意してください。変更はepel-release-6-7.noarch.rpmからepel-release-6-8.noarch.rpmへの変更です。

  1. PHP 5.4を提供するリポジトリをyumに追加する方法は?

    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
    yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm
    
  2. これは現在のPHP CentOSのバージョンをシームレスに置き換えることができますか?私にとって、次のコマンドは機能し、既存のPHPウェブページが壊れましたあなたの走行距離は変わるかもしれません。

    yum --enablerepo=remi install httpd php php-common
    yum --enablerepo=remi install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-Gd php-mbstring php-mcrypt php-xml
    service httpd restart
    
  3. PHP5.4をサポートしているときに、公式リポジトリに戻すにはどうすればよいですか?削除して再インストールするコマンドをテストしていませんPHP CentOSリポジトリからですが、これらは動作するはずです。

    # Remove the Remi packages. Note the reversed command order
    yum remove php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-Gd php-mbstring php-mcrypt php-xml
    yum  remove httpd php php-common
    # Install the CentOS packages. 
    yum install httpd php php-common
    yum install php-pecl-apc php-cli php-pear php-pdo php-mysql php-pgsql php-pecl-mongo php-sqlite php-pecl-memcache php-pecl-memcached php-Gd php-mbstring php-mcrypt php-xml
    
  4. 壊れる可能性はありますかPHP私が現在使用している[sic]モジュール?はい。最新バージョンのCentOS(6.2?)を使用してZendインストーラを使用してZendをインストールした場合、上記のアップグレードによりZendが破損しました。

上記のコマンドはすべてrootとして実行されました。ベストプラクティスは、非特権ユーザーとしてログインし、Sudoを使用することです。 (これは開発版ですVM現在のスナップショット...)

また、デフォルトでRemiリポジトリーを有効にしないでください。以前は、リポジトリーの優先順位を使用していても、以前は賢く、デフォルトで有効にしていたため、問題が発生しました。

19
Jeff Benshetler

他のWebtatic回答に対する改善:

1。 http://www.webtatic.com/packages/php54/ のガイドの使用:

rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm

2。最初に、既存のインストール済みパッケージで置き換える必要があるものを確認する必要があります。これを行うには、yum Shellを使用して、php-commonの削除とphp54w-commonのインストールを1つのトランザクションで結合します(共有の依存関係は削除されません)。

yum Shell
> remove php-common
> install php54w-common
> run
…
Is this ok [y/N]: n

結果に対して「y」と言ってはいけませんが、「依存関係の削除」で言及されているすべてのパッケージに注意してください。

Removing for dependencies:
 php
 php-cli
 php-pear
 php-pecl-memcache
 php-mysql

このリストにphp *以外のパッケージがある場合、Webtatic PHP 5.4にシームレスに切り替えることはできませんが、代替案を調査する必要があります。Webtaticにはすべての基本phpパッケージの代替パッケージがあります(インストールされている特定のphpバージョンに依存するパッケージがインストールされている他のサードパーティのリポジトリを使用しない限り、確認のために1。

残りのインストール(yumシェルのまま)では、これらのパッケージを削除して、対応するphp54w- *をインストールします。

> remove php-common php php-cli php-pear php-pecl-memcache php-mysql
> install php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> run
…
Is this ok [y/N]: y

削除してインストールするように設定したパッケージのみがリストに表示され、インストールを確認して切り替えることができます。 phpがロードされた状態で現在実行されているサービス(httpdやphp-fpmなど)は再起動する必要があります。

これが「シームレス」であることに関して、ユーザーがWebサイトにアクセスできる間に発生するソフトウェアの変更は、結果を完全に理解する必要があります。プロセスがまだロードしていないときに削除および追加される共有ライブラリは、共有ライブラリが存在しないときにロードされる可能性があります。このようなソフトウェアのアップグレードをオフラインで実行することをお勧めします。できれば、最初に非運用マシンでテストして、プロセスが期待どおりに機能することを確認します。

3。仮想のCentOSベースのphp54パッケージ(CentOS 5はphp53接頭辞を使用)に切り替えるには、上記の手順を実行して、phpの削除をphp54wの削除に置き換え、php54wのインストールをphp54のインストールに置き換えます。

yum Shell
> remove php54w-common
> install php54-common
> run
…
Is this ok [y/N]: n
…
> remove php54w-common php54w php54w-cli php54w-pear php54w-pecl-memcache php54w-mysql
> install php54-common php54 php54-cli php54-pear php54-pecl-memcache php54-mysql
> run
Is this ok [y/N]: y

ただし、架空のベースphp54への切り替えについては、一部のパッケージの代替手段がない可能性が高く(たとえば、CentOS 5にphp53-pecl-memcache拡張機能がなかった)、WebtaticにはCentOSベースで使用できないパッケージ(php54wなど)があります。 -pecl-zendopcache)。それらが欠落している場合は、通常、peclを直接使用してそれらをインストールする以外のオプションはありません。

4。 PHPアップグレードするとバグが発生する可能性があるため、Webサイトを再テストする必要があります。これはWebtaticに固有のものではなく、新機能が新しいバグを発生させるという一般的な考え方です。

承認された回答のRemiのリポジトリとは異なり、Webtatic EL6リポジトリはCentOSの基本リポジトリと同じパッケージ名を使用しないため、切り替えるつもりのないパッケージのインストール/アップグレードを上書きしないため、デフォルトで有効になっています。

免責事項:私はWebtaticの所有者/管理者です

9
Andy

ここで、yumインストール用のphp 5.4.9を見つけることができます。

http://www.webtatic.com/packages/php54/

「rpm -qa | grep php」を実行して現在のすべてのphpパッケージを表示し、「rpm -e」を削除して削除できます。現在のモジュールはわかりませんが、アップグレード前にテストする価値はあります。

0
TheDayIsDone