Enhancement(機能追加・改善) #4176
完了
Youichi Kimura さんが7年以上前に追加.
4年以上前に更新.
説明
Overview (概要)¶
現在 OpenPNE に同梱されている PEAR 1.9.0 (2009-09-03) には、PHP5 以前の古い文法によるソースコードが多数存在している。
特に $hoge =& new Hoge();
のような代入文は PHP7 では廃止されており、実行時に Parse Error で異常終了する原因となっている (#4112-1)
当チケットでは OpenPNE を PHP7 対応する上で必要となる PEAR の更新作業を行う。
Spec (仕様)¶
OpenPNE の lib/vendor/PEAR/
以下に同梱されている PEAR を、現時点の最新版である 1.10.3 (2017-02-28) に更新する。
また、PEAR 1.10.3 を導入するために必要な依存パッケージもあわせて追加・更新する。
- 題名 を PEAR 1.10.1 へのアップデート から PEAR 1.10.3 へのアップデート に変更
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
PEAR 本体以外にも Image_Transform などアップデートが必要なパッケージが存在するため一旦差し戻します
画像サムネイルを表示する際に出力されるエラー:
Parse error: syntax error, unexpected 'new' (T_NEW) in /vagrant/lib/vendor/PEAR/Image/Transform.php on line 255
- 題名 を PEAR 1.10.3 へのアップデート から PEARパッケージのアップデート に変更
#4176-3 以外の PHP7 で動作しない PEAR パッケージ¶
- Image_Transform 0.9.3 => 0.9.5
- Calendar 0.5.4 => 0.5.5
- OpenPNE_Amazon (パッケージ化されていない)
- Services_Amazon 0.7.1 => PHP7非対応
- HTTP_Request 1.4.2 => PHP7非対応
OpenPNE_Amazon クラスは dd0bf8b にて追加されており、 opReviewPlugin は現在の OpenPNE では動作しない状態のままとなっている (Doctrine への移行も行われていない)
opReviewPlugin 以外に依存している箇所が存在しなければ OpenPNE_Amazon ごと削除しても問題はなさそう。
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
修正内容は問題ないと思います (#4176-9 に修正必要事項記載しました)
- #4112-5 において、 Net_UserAgent_Mobile はそのままとする対応かと考えますが、(OpenPNE上で呼び出される箇所はないため優先度は高くないですが)ScreenInfo.php が include された時点で動かなくなるため、その対策のチケット作成はしておいていいかもしれません
- PHP 4 形式のコンストラクタ が非推奨で PHP Deprecated のエラーとなっているライブラリがいくつかありますが、念のためその対策のチケットは作っておいた方がいいかもしれません
memo¶
PHP7.0.17 において確認
以下のようなエラーがでる (PHP Deprecated は除外)
$ find lib/vendor -name *.php |xargs -I@ php -l @ 2>&1 1>/dev/null | grep -v "PHP Deprecated"
PHP Parse error: syntax error, unexpected 'new' (T_NEW) in lib/vendor/PEAR/Net/UserAgent/Mobile/DoCoMo/ScreenInfo.php on line 2088
OSS 本体においては Net_UserAgent_Mobile_Common::getDisplay()
が呼ばれないため、
lib/vendor/PEAR/Net/UserAgent/Mobile/DoCoMo/ScreenInfo.php
もファイルも include されない
lib/vendor/PEAR/Net/IPv4.php
で PHP7 から廃止された eregi()
が使われているため、対策は必要です (IPチェックで使われる)
- 対象バージョン を OpenPNE 3.9.0 から OpenPNE 3.10.x に変更
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
- 担当者 を Youichi Kimura から kaoru n に変更
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
- ステータス を Rejected(差し戻し) から Fixed(完了) に変更
- 対象バージョン を OpenPNE 3.10.x から OpenPNE 3.11.x に変更
- 進捗率 を 50 から 100 に変更
PEAR/Net/IPv4.php のバージョンアップについては別チケットにします→ #4440
#4428 #4440 以外はすでにリリース済みであるのでこのチケットは終了とします。
他の形式にエクスポート: Atom
PDF