Project

General

Profile

Bug(バグ) #205

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

Added by Kousuke Ebihara almost 10 years ago. Updated almost 4 years ago.

Status:
Fixed(完了)
Priority:
High(高め)
Target version:
Start date:
2009-07-29
Due date:
% Done:

100%

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

Description

以前のチケットは 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をコピーしてもインストは完了されない。 
}}}


Related issues

Related to OpenPNE 3 - Backport(バックポート) #1572: ZendFrameworkがあるとインストールに失敗する Fixed(完了) 2009-07-29
Related to OpenPNE 3 - Backport(バックポート) #2679: ZendFrameworkがあるとインストールに失敗する Fixed(完了) 2009-07-29 2012-01-12

Associated revisions

Revision 821abff4 (diff)
Added by Kousuke Ebihara about 9 years ago

updated bandled ZendFramework to latest stable release (ZendFramework 1.10.8) (fixes #205)

I executed the following command:
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Acl
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Acl.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Exception
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Exception.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Feed
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Feed.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Http
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Http.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Loader
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Loader.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Mail
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Mail.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Mime
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Mime.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Registry
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Registry.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Search
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Search.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Uri
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Uri.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Validate
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Validate.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Version
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Version.php

Revision 882728ce (diff)
Added by Kousuke Ebihara over 8 years ago

s/ZendFramework/Zend Framework/ (fixes #205)

History

#1 Updated by Kousuke Ebihara about 9 years ago

  • 3.6 で発生するか set to Yes

#2 Updated by Rimpei Ogawa about 9 years ago

  • Priority changed from Low(低め) to Normal(通常)

#3 Updated by Hidenori Goto about 9 years ago

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

環境

  • 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側で対処した方がよいのかもしれません。

#4 Updated by Kousuke Ebihara about 9 years ago

  • Priority changed from Normal(通常) to High(高め)
  • Target version set to OpenPNE 3.7.0

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

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

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

#5 Updated by Kousuke Ebihara about 9 years ago

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

#6 Updated by Kousuke Ebihara about 9 years ago

次の方針で実装します。

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

#7 Updated by Kousuke Ebihara about 9 years ago

  • Status changed from Accepted(着手) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

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

#8 Updated by Hidenori Goto about 9 years ago

以下の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ブランチに戻り、インストールが成功することを確認

#9 Updated by Rimpei Ogawa about 9 years ago

  • Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)

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

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

#10 Updated by Rimpei Ogawa about 9 years ago

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

#11 Updated by Kousuke Ebihara over 8 years ago

  • Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)

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

#12 Updated by Naoya Tozuka over 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

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

#13 Updated by Naoya Tozuka over 8 years ago

  • Subject changed from ZendFramworkがあるとインストールに失敗する to Zend Frameworkがあるとインストールに失敗する

#14 Updated by Kousuke Ebihara about 8 years ago

  • Subject changed from Zend Frameworkがあるとインストールに失敗する to ZendFrameworkがあるとインストールに失敗する

#15 Updated by Fumie Toyooka almost 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Fixed(完了)
  • % Done changed from 70 to 100

テストOKです。

#16 Updated by kaoru n almost 4 years ago

  • 3.8 で発生するか set to Unknown (未調査)

Also available in: Atom PDF