Bug(バグ) #205
ZendFrameworkがあるとインストールに失敗する
100%
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
Associated revisions
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
s/ZendFramework/Zend Framework/ (fixes #205)
History
#1
Updated by Kousuke Ebihara over 12 years ago
- 3.6 で発生するか set to Yes
#2
Updated by Rimpei Ogawa over 12 years ago
- Priority changed from Low(低め) to Normal(通常)
#3
Updated by Hidenori Goto over 12 years ago
この現象が再現したので調べてみました。
環境¶
- Windows7 64bit
- XAMPP for Windows 1.7.3
- XAMPP付属PHP 5.3.1
- XAMPP付属ZendFramework 1.9.6
回避方法¶
- XAMPP配下のPEARをインクルードパスから外す
- 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をバリデートする処理)で、以下のような流れでエラーになっていました。
- Zend_Validate_Hostname_Jpに対応するファイルが読み込み可能か?→true
- Zend_Validate_Hostname_Jpクラスをロード→クラスじゃないのでエラー
提案¶
システムのインクルードパスにPEARが事前に設定されている場合は、衝突の可能性があるので、OpenPNE側で対処した方がよいのかもしれません。
#4
Updated by Kousuke Ebihara over 12 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 over 12 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 over 12 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 over 12 years ago
- Status changed from Accepted(着手) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
更新履歴 821abff4e86ab2fe50d592f5fe82209e14b653d7 で適用されました。
#8
Updated by Hidenori Goto over 12 years ago
以下のXAMPP環境で、症状が改善されていることを確認しました。
- Windows7 64bit
- XAMPP for Windows 1.7.3
- XAMPP付属PHP 5.3.1
- XAMPP付属ZendFramework 1.9.6
- php.iniはXAMPPデフォルトのまま
確認内容¶
- 821abff4e86ab2fe50d5 を含む最新版をgit clone
- OpenPNE-3.6beta4タグをチェックアウトして、インストールが失敗することを確認
- masterブランチに戻り、インストールが成功することを確認
#9
Updated by Rimpei Ogawa over 12 years ago
- Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)
NOTICE ファイルの記述で "Zend Framework" を "ZendFramework" に変更しているのは意図的なものでしょうか。公式ページで "ZendFramework" とスペースなしで記載されている箇所が見つからなかったのでスペース付きの方が適切ではないかと思います。
また、このチケットとは直接関係ありませんが、NOTICE ファイルの symfony バージョンおよび Copyright の年号が更新されていない問題を発見しました。
#10
Updated by Rimpei Ogawa over 12 years ago
NOTICE ファイルが更新されていない問題は別チケットを作成しました。 #1588
#11
Updated by Kousuke Ebihara over 11 years ago
- Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)
更新履歴 882728cee6be00016dedbe3e64e417db1c34c7cf で適用されました。
#12
Updated by Naoya Tozuka over 11 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 11 years ago
- Subject changed from ZendFramworkがあるとインストールに失敗する to Zend Frameworkがあるとインストールに失敗する
#14
Updated by Kousuke Ebihara over 11 years ago
- Subject changed from Zend Frameworkがあるとインストールに失敗する to ZendFrameworkがあるとインストールに失敗する
#15
Updated by Fumie Toyooka over 11 years ago
- Status changed from Pending Testing(テスト待ち) to Fixed(完了)
- % Done changed from 70 to 100
テストOKです。
#16
Updated by kaoru n over 7 years ago
- 3.8 で発生するか set to Unknown (未調査)