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


22

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

私はこれらの手順について詳細に説明することができます。

  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

回答:


19

Fedora 17/16、CentOS / RHEL 6.3 / 5.8にApache / PHP 5.4.10をインストールする手順を少し修正して実行しました。たぶん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. これにより、CentOSの現在のPHPバージョンをシームレスに置き換えることができますか?私にとって、次のコマンドは機能し、既存のPHP Webページはいずれも壊れませんでした。あなたのマイレージは異なる場合があります。

    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をサポートしている公式リポジトリに戻るにはどうすればよいですか?CentOSリポジトリからPHPを削除して再インストールするコマンドはテストしていませんが、これらは機能するはずです。

    # 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モジュールを破損する可能性はありますか?はい。Zendインストーラーを使用してZendをインストールした最新バージョンのCentOS(6.2?)を使用すると、上記のアップグレードによりZendが破損しました。

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

また、Remiリポジトリをデフォルトで有効にしないでください-過去に私は巧妙になり、デフォルトで有効にしたので、リポジトリの優先度があっても、物事は壊れました。


3
レミでは物事がoftenくなりがちです。私は、最新のphpにiuscommunityリポジトリを使用することを好みます。もう1つの方法は、Zendサーバーリポジトリを使用することですが、私には少しオーバーヘッドのようです。
カジミエラスアリウリス

1
@KazimierasAliulis残念ながら、IUSリポジトリは、互換性のないパッケージ名とファイル名を使用することにより、依存関係の地獄を引き起こします。使用することはお勧めできません。
マイケルハンプトン

非常に詳細な説明。Zendエンジンに関連するコードはないので、私の場合は問題になりませんよね?
ビカリー

1
私が使用する@MichaelHampton yum --enablerepo=remi updateは、関連するすべてのphpパッケージを処理します。より良いソリューションのようです。サーバーは数日間問題なく動作します。すべての情報に感謝します。
Vicary

1
注:phpインストールリストに追加するのを忘れたため、Apacheがphpファイルにサービスを提供しなかったため、多くの問題が発生しました。使用する場合は忘れずにこれを追加してください
eric.itzhak

9

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

1 http://www.webtatic.com/packages/php54/のガイドを使用します

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

2。最初に既存のインストール済みパッケージの置き換えを確認する必要があります。これは、yumシェルを使用して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パッケージの置換パッケージがあります(1にリンクされているページにリストされているパッケージを確認してください)。したがって、特定のphpバージョンに依存してインストールされたパッケージを持つ他のサードパーティリポジトリを使用しない限り、問題はありませんインストール済み。

残りのインストール(まだ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拡張機能はありませんでした)に代わるものはおそらくないでしょう。 -pecl-zendopcache)。それらが欠落している場合、通常、peclを使用して直接インストールする以外のオプションはありません。

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

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

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


yum shellメソッドは、依存関係の監視に非常に適しています。
Vicary

@アンディ、詳細な説明をありがとう、ありがとう。CentOS 6でPHPのデフォルトのcli(およびcliのみ)を5.4に変更するにはどうすればよいですか?
ガイア

0

yumインストール用のphp 5.4.9があります。

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

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


サーバーメンテナンスに関しては、単にインストールしてテストを実行するだけでなく、何かを行う前にもっと情報を活用することができます。
Vicary
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.