Server

PHP5.3のPEARをアップデート

Category

Server

PHP5.3系でPEARをアップデートする際、ちょっとしたコツが必要になります。
これは、デフォルトのリポジトリ経由でアップデートする際、PHPのパッケージが分かれている事が原因のようです(PHP5.3とそれ以前のPHP5.1.6でパッケージが分かれています)。
Remi等の外部リポジトリを使用すれば、パッケージが分かれていないため、依存関係の問題はさほど気にすることはありませんが、案件によっては、サードパーティ製の外部リポジトリの使用は避けたい場合もあります(個人的には、デフォルトでは用意されていないけど、「どうしても機能的に使いたい!」といった場合は使っちゃいますけど...)。
今回は、php53パッケージ(デフォルトのリポジトリを使用)でPHPの5.3系をインストールしたサーバーで、PEARをアップデートする手順を覚え書きとして書き残しておきます。

Keyword:PEAR,pearコマンド,PHP5.3

PHP5.3のPEARをアップデート

PHP5.3のPEARアップデート手順

1.PEARのインストールパッケージを確認
現在インストールされているPEARのパッケージを確認します。

コマンド

# PEARのインストールパッケージを確認
pear list

# インストールされているパッケージが表示されます(※以下は表示例です)
Archive_Tar       ○.○.○
Console_Getopt    ○.○.○
Mail_Mime         ○.○.○
Mail_mimeDecode   ○.○.○
PEAR              ○.○.○
Structures_Graph  ○.○.○
XML_RPC           ○.○.○

補足

●PEARのインストールパッケージを確認
インストール済みのPEARのパッケージを確認します。
PHP5.3をインストールした後、”pear list”コマンドでパッケージを確認すると、大量のエラーが出力されるはずです(ここではひとまずそのエラーは無視して、インストール済みのパッケージのみを確認します)。
これは、PEARにはphp53-pearがないため、依存関係にあるパッケージでエラーが出力されてしまうようです。例えば、php53-commonしか入っていなくても、php-commonとのコンフリクトエラーが出力されたりします。”依存関係でphp-commonも必要だけど、php53-commonとコンフリクトします”といったように、PEARがphp53~のパッケージで認識できていないものがあることが原因のようです。ですが、PEAR自体はPHP5.3に対応していますので、各パッケージを強制的にアップデートすることで、このエラーを回避することができます。

●インストールされているパッケージが表示されます
“○.○.○”はインストールされているパッケージのバージョンです。

2.PEARパッケージのアップデートとPEAR本体のアップデート
PEAR本体と依存関係にあるパッケージを強制的にアップデートした後に、PEAR本体をアップデートします。

コマンド

# PEARと依存関係にあるパッケージを強制的にアップデート
pear upgrade --force Archive_Tar
pear upgrade --force Console_Getopt
pear upgrade --force Mail_Mime
pear upgrade --force Mail_mimeDecode
pear upgrade --force Structures_Graph
pear upgrade --force XML_RPC

# PEAR本体をアップデート
pear upgrade PEAR

補足

●PEARと依存関係にあるパッケージを強制的にアップデート
PEAR本体より先に、PEARと依存関係にあるパッケージを強制的にアップデートします。各パッケージのアップデート時にエラーが出力されますが、無視してアップデートを続けます。

●PEAR本体をアップデート
PEARと依存関係にあるパッケージを強制的にアップデートした後、PEAR本体をアップデートします。

3.再度PEARのインストールパッケージを確認
PEARと依存関係にあるパッケージとPEAR本体をアップデートした後、再度PEARのインストールパッケージを確認します。

コマンド

# PEARのインストールパッケージを確認
pear list

補足

エラーが出力されていなければOK!(エラーが出なくなっているはずです)。
各パッケージのバージョンがアップデートされているかも確認します。
PEAR本体のみのバージョン確認コマンドは以下でもOK。
⇒ pear version

PHP5.3でPEARを使用する際の注意点

PHP5.3でPEARを使用する際、Deprecatedエラーが表示されてしまう場合があります。
Deprecatedエラーとは、PHP5.3から追加されたエラーレベルで、特定の機能が推奨されないことを示す際に表示されます。
どういった場合にこのエラーが出るかというと、クラスのインスタンスを作成する際、参照渡しをするとDeprecatedエラーが出力されてしまいます(PHP5はnewすると参照になりますが、”=&”でさらに参照で受け取ろうとしていることが原因のようです)。
[参考サイト]
PHP 5.3.x で推奨されない機能

php.iniの”error_reporting”の変更でDeprecatedエラーを非表示にできます。

php.ini

;Deprecatedエラーを非表示にする
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED

補足

注意点としては、PHP5.3の場合の対処法であるという点です。
今後、PHP5.4以降にバージョンアップした際、この対策が施される可能性もあります。その場合、Deprecatedエラーは出力されませんがエラーとなり、スクリプトが動作しなくなることも考えられますので、PHP5.4以降ではPEAR本体側を修正することをおすすめします。

PEARをPHP5.3以降で使用する場合、当記事のおすすめ書籍でも紹介している「PHPによるWebアプリケーションスーパーサンプル活用編 第3版」に非常に分りやすく解説されています。

PHP5.3以降で使用するにはいろいろと問題があるPEARですが、PHP5.3以降にも対応したPEAR2も開発されています。現状では名前空間の動向が決まっていない等の理由で完全に対応されているわけではありませんので、あしからず。
⇒ PEAR2

List

関連記事(※当記事と関連性が高いと思われる記事)

PEARをアップデートしました

2012/06/09
PEARをアップデートしました
スコア:28 ※スコアの数値が大きいほど、関連性の高い記事です。 PHPの拡張ライブラリであるPEARをPHP5.3用にアップデートしました。 当サイト公開時は、とりあえずWordPressが動く環境(PHP5.2.4以上)があればよ... 続きを読む...

CentOSにPHP5.3をインストール

2012/04/04
CentOSにPHP5.3をインストール
スコア:23 ※スコアの数値が大きいほど、関連性の高い記事です。 以下を前提にインストールするものとします。 CentOS5系でのインストール手順 PHP5.3とMySQLをインストール 基本、デフォルトのリポジトリ経由でインストール... 続きを読む...

APCでPHPの処理を高速化

2012/06/12
APCでPHPの処理を高速化
スコア:19 ※スコアの数値が大きいほど、関連性の高い記事です。 PHPアクセレーターAPCとは? PHPアクセレーターとは、PHPのスクリプトを最適化してコンパイルされた状態でデータをキャッシュし、以後同じデータにアクセスがあった際... 続きを読む...

CentOSでPHPのバージョンをアップデート

2011/12/23
CentOS
スコア:16 ※スコアの数値が大きいほど、関連性の高い記事です。 CentOSでyumを使ってPHPを5.2系にアップデートする手順 外部のリポジトリでよく聞くのは以下の2つだと思います。 ・Les RPM de Remi ・Utte... 続きを読む...

PHPを5.3系にアップデートしました

2012/04/01
PHPを5.3系にアップデート
スコア:16 ※スコアの数値が大きいほど、関連性の高い記事です。 サーバー移行を行ったついでにPHPを5.3系にアップデートしました。 サイト公開時は、とりあえずWordPressの最新版がインストールできる環境(PHPはVer.5.... 続きを読む...

おすすめ書籍・商品(※当記事と関連性が高いと思われる書籍・商品)

ページの先頭へ