プロジェクト

全般

プロフィール

Bug(バグ) #205

完了

ZendFrameworkがあるとインストールに失敗する

Kousuke Ebihara さんが約15年前に追加. 約9年前に更新.

ステータス:
Fixed(完了)
優先度:
High(高め)
担当者:
対象バージョン:
開始日:
2009-07-29
期日:
進捗率:

100%

予定工数:
3.6 で発生するか:
Yes
3.8 で発生するか:
Unknown (未調査)

説明

以前のチケットは http://trac.openpne.jp/ticket/4183 です

http://sns.openpne.jp/?m=pc&a=page_fh_diary&target_c_diary_id=21238より転記

{{{
./symfony openpne:install
にて

Is it OK to start this task? (y/n)

y
PHP Notice: Undefined variable: config in /var/www/html/OpenPNE-3.1.1/lib/task/opPluginSyncTask.class.php on line 100

File "Zend/Validate/Hostname/Jp.php" does not exist or class "Zend_Validate_Hostname_Jp" was not found in the file

実際、ZendからJp.phpをコピーしてもインストは完了されない。 
}}}


関連するチケット 2 (0件未完了2件完了)

関連している OpenPNE 3 - Backport(バックポート) #1572: ZendFrameworkがあるとインストールに失敗するFixed(完了)Kousuke Ebihara2009-07-29

操作
関連している OpenPNE 3 - Backport(バックポート) #2679: ZendFrameworkがあるとインストールに失敗するFixed(完了)Yuya Watanabe2009-07-292012-01-12

操作

Kousuke Ebihara さんが14年以上前に更新

  • 3.6 で発生するかYes にセット

Rimpei Ogawa さんが14年以上前に更新

  • 優先度Low(低め) から Normal(通常) に変更

Hidenori Goto さんが約14年前に更新

この現象が再現したので調べてみました。

環境

  • Windows7 64bit
  • XAMPP for Windows 1.7.3
  • XAMPP付属PHP 5.3.1
  • XAMPP付属ZendFramework 1.9.6

回避方法

  1. XAMPP配下のPEARをインクルードパスから外す
  2. XAMPP配下のZendFrameworkのJp.phpのファイル名を、OpenPNEインストール時のみ一時的に変更する

原因詳細

OpenPNE3.6beta3に付属するZendFrameworkは古いバージョンのようで、Zend_Validate_Hostnameの処理方式が異なるようです。

  • OpenPNE3.6beta3に付属のもの→Jp.phpなどが単体のクラスになっていて、クラスをロードする形になっている(Jp.phpは付属しない)
  • XAMPP付属など新しいバージョンのもの→Jp.phpなどは配列データを返すのみになっている

システムのインクルードパスにZendFrameworkが存在しない場合は問題にならないのですが、WindowsでXAMPP環境を使っている場合はチケットタイトルのようにXAMPP環境のZendFrameworkが存在します。
OpenPNE付属のZendFrameworkのホスト名チェック処理(plugins.openpne.jpをバリデートする処理)で、以下のような流れでエラーになっていました。

  1. Zend_Validate_Hostname_Jpに対応するファイルが読み込み可能か?→true
  2. Zend_Validate_Hostname_Jpクラスをロード→クラスじゃないのでエラー

提案

システムのインクルードパスにPEARが事前に設定されている場合は、衝突の可能性があるので、OpenPNE側で対処した方がよいのかもしれません。

Kousuke Ebihara さんが約14年前に更新

  • 優先度Normal(通常) から High(高め) に変更
  • 対象バージョンOpenPNE 3.7.0 にセット

ZendFramework では半公式ではありますが PEAR チャンネルサーバ経由でのインストールがおこなえるようにもなっています。
http://pear.zfcampus.org/

報告にあるような XAMPP 環境でのインストールはやや特殊かもしれませんが、前述の PEAR チャンネルサーバの利用や Fedora 等のディストリビューションが提供するパッケージを利用して、 ZendFramework を、たとえば OpenPNE ではない他のシステム用にインストールするというような運用は充分考えられることです。

3.6.0 までに確実に対処しておきたいところです。

Kousuke Ebihara さんが約14年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Kousuke Ebihara にセット
  • 互換性を壊すことを厭わないのであればデフォルトの include_path の設定を外すのが一番簡単。 OpenPNE では依存するライブラリはすべて同梱し、確実にそのライブラリを使う方針なので、そこに漏れがなければ問題にならない
  • OpenPNE の lib/vendor/Zend/ をインクルードパスに設定する前に ZendFramework のライブラリが読み込める場合はそっちを優先して使う(各ライブラリのバージョンの差異によって挙動が異なる場合、そのライブラリを使用している箇所の動作保証ができなくなる)
  • 同梱している Zend_Framework をバージョンアップするのが現実的に無難な解決策だが、影響範囲を考えると安定版やベータ版には取り込めなくなってしまう
以下の解決方法を模索します。
  • Zend_Loader で制御できないかどうか?
  • もしくは独自のオートローダーを書いてハンドリングできないかどうか?

Kousuke Ebihara さんが約14年前に更新

次の方針で実装します。

  • OpenPNE 3.7.0 : 同梱する ZendFramework の最新の安定版にアップデートします
  • OpenPNE 3.6 以前 : ZendFramework の最新の安定版に存在する Zend/Validate/Hostname/*.php に対応するファイルが同梱している ZendFramework に存在していなければ、最新の安定版で配布されている Zend/Validate/Hostname/*.php とほぼ近い挙動になるようなクラスファイルを追加するという暫定的な対処をおこないます

Kousuke Ebihara さんが約14年前に更新

  • ステータスAccepted(着手) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 821abff4e86ab2fe50d592f5fe82209e14b653d7 で適用されました。

Hidenori Goto さんが約14年前に更新

以下のXAMPP環境で、症状が改善されていることを確認しました。

  • Windows7 64bit
  • XAMPP for Windows 1.7.3
  • XAMPP付属PHP 5.3.1
  • XAMPP付属ZendFramework 1.9.6
  • php.iniはXAMPPデフォルトのまま

確認内容

  1. 821abff4e86ab2fe50d5 を含む最新版をgit clone
  2. OpenPNE-3.6beta4タグをチェックアウトして、インストールが失敗することを確認
  3. masterブランチに戻り、インストールが成功することを確認

Rimpei Ogawa さんが約14年前に更新

  • ステータスPending Review(レビュー待ち) から Rejected(差し戻し) に変更

NOTICE ファイルの記述で "Zend Framework" を "ZendFramework" に変更しているのは意図的なものでしょうか。公式ページで "ZendFramework" とスペースなしで記載されている箇所が見つからなかったのでスペース付きの方が適切ではないかと思います。

また、このチケットとは直接関係ありませんが、NOTICE ファイルの symfony バージョンおよび Copyright の年号が更新されていない問題を発見しました。

Rimpei Ogawa さんが約14年前に更新

NOTICE ファイルが更新されていない問題は別チケットを作成しました。 #1588

Kousuke Ebihara さんが13年以上前に更新

  • ステータスRejected(差し戻し) から Pending Review(レビュー待ち) に変更

更新履歴 882728cee6be00016dedbe3e64e417db1c34c7cf で適用されました。

Naoya Tozuka さんが13年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

修正確認しました。OKです。
(NOTICE ファイルの symfony バージョンおよび Copyright の年号が更新されていない問題については #1588 で)

Naoya Tozuka さんが13年以上前に更新

  • 題名ZendFramworkがあるとインストールに失敗する から Zend Frameworkがあるとインストールに失敗する に変更

Kousuke Ebihara さんが13年以上前に更新

  • 題名Zend Frameworkがあるとインストールに失敗する から ZendFrameworkがあるとインストールに失敗する に変更

Fumie Toyooka さんが約13年前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

テストOKです。

kaoru n さんが約9年前に更新

  • 3.8 で発生するかUnknown (未調査) にセット

他の形式にエクスポート: Atom PDF