プロジェクト

全般

プロフィール

Bug(バグ) #1780

完了

php ./symfony openpne:install時にエラーが出る

pnetan   さんが約14年前に追加. 約9年前に更新.

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

100%

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

説明

http://sns.openpne.jp/diary/25547 より転記

サーバ:試験用のWindows XPの普通のノートPC

下記インストール済み、動作確認OK
Apacche 2.2.17
MySQL 5.1.52
PHP 5.3.3

OpenPNEは3.4.8をDLして、D:\OpenPNEに展開した。
あとは、セットアップなんだけど

php ./symfony openpne:install

でエラーが出て先に進めず。エラー内容解析中。

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

関連している OpenPNE 3 - Backport(バックポート) #2308: php ./symfony openpne:install時にエラーが出るFixed(完了)Yuya Watanabe2011-07-27

操作
関連している OpenPNE 3 - Backport(バックポート) #2682: php ./symfony openpne:install時にエラーが出るInvalid(無効)Yuya Watanabe2010-11-112012-01-12

操作
関連している OpenPNE 3 - Bug(バグ) #3603: pear.symfony-project.com に接続できない時、php ./symfony openpne:install時にエラーが出るFixed(完了)Shinichi Urabe2017-05-26

操作

Kousuke Ebihara さんがほぼ14年前に更新

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

Mutsumi Imamura さんが13年以上前に更新

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

報告元の追加報告を転記します。

pnetanさん、kit.tさん

すみません、しばらくこのサイトにこられず放置状態でしたm(_ _)m

kit.tさん
config以下のファイルのコピーはすませて、base_urlとhttp_proxyの設定は書き換えてあります。

エラーの内容は

=============ここから=============
The DBMS : mysql
The Database Username : xxxxxxxx
The Database Password : ******
The Database Hostname : localhost
The Database Port Number :
The Database Name : openpne
The Database Socket :

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

Y
>> sfPearFrontendPlugin Attempting to discover channel "plugins.openpne.jp"...
>> sfPearFrontendPlugin Attempting to discover channel "pear.symfony-project.com
"...

Unable to register channel "pear.symfony-project.com" 
=============ここまで=============

なので、pear.symfony-project.comでchannel登録が出来ません。ですね、サーバーはイントラネット内に置いてあるので、PROXYの問題が考えられます。試験的にネット環境を変えて再度トライしてみようと思います。

isao sano さんが13年以上前に更新

  • 題名作業日記 から php ./symfony openpne:install時にエラーが出る に変更

Shingo Yamada さんが13年以上前に更新

  • 360対象RC1 にセット

Shingo Yamada さんが約13年前に更新

  • 担当者Yuya Watanabe にセット

プラグインチャンネルサーバに繋げない環境でも、何らかの形でインストールが正常に行える様に修正をお願いします。

Yuma Sakata さんが約13年前に更新

  • 360対象 を削除 (RC1)

Shingo Yamada さんが約13年前に更新

  • 360対象RC1 にセット

Yuya Watanabe さんが約13年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更

Yuya Watanabe さんが約13年前に更新

処理の流れ

問題であると思われるまでの処理の流れを記述する.

  1. OpenPNEインストール時にlib/task/opPluginSyncTask.class.phpが実行される.
  2. opPluginSyncTaskクラスにおいて
    1. config/OpenPNE.yml内plugin_list_base_urlの値にあるURLからプラグインリストを取得する,
    2. それぞれのプラグインのlib/task/opPluginInstallTask.class.phpのインスタンスが生成され,実行される.
  3. opPluginInstallTaskクラスexecute()メソッドにおいて
    1. チャンネルサーバの設定を確認する.設定はconfig/OpenPNE.yml内default_plugin_channel_serverの値を用いる.
    2. lib/plugin/opPluginManager.class.phpを生成する.
  4. opPluginManagerクラス__construct()において
    1. lib/vendor/symfony/lib/plugin/sfPearEnvironment.class.phpのregisterChannel()を用いてチャンネルサーバを登録しようとする.
    2. 同クラス内registerOpenPNEPackage()を呼び出す.

原因

処理の流れ4-2の部分でチャンネルサーバに接続できないためOpenPNEのパッケージ登録に失敗することで発生しているsfPluginExceptionを拾う部分がないためOpenPNEインストールタスク全体が停止する.

原因の発生源

上記問題箇所は以下のような流れで発生している.

  1. 7c851276 チャンネル登録部分が追加される.
  2. 7b2d8f45 チャンネル登録時の例外処理を追加される.
  3. 3c19fa17 OpenPNEのパッケージ登録部分の追加(本チケットにおける問題を発生する例外を投げる部分)

実装方針

本チケットの問題を解決するにはOpenPNEインストールタスク全体が停止しないようにする必要がある.
ここではプラグインインストールが失敗するという粒度にすることが適切であると思われるため,処理の流れ2-2の呼び出し部分より深い部分で例外処理を行うべきである.
プラグインチャンネルサーバにつながらないという原因の場合,例外の発生源として以下の場所が考えられる.
  • 処理の流れ4-2でOpenPNEのパッケージ登録に失敗すること投げられるsfPluginException
  • 処理の流れ4-1でチャンネルを登録できないときに投げられるsfPluginException(対処済み)

後者の発生源は例外に対して処理が施されているが 7b2d8f45 において何らかの問題を解決するためにすでに深い階層部分で例外処理を行う修正が行われている.
そのため例外を拾う部分はopPluginManagerクラス__construct()内となる4-2で例外処理を行うことが妥当であると思われる.

wa ta さんが約13年前に更新

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

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

Yuya Watanabe さんが約13年前に更新

note-10適用後では処理の流れ2-2においてsfCommandExceptionが発生し,これを拾う処理がなされるようになる.
これは引数のoptionに--force-licenceを付与することで発生しないようにすることもできるが,適切かどうかの判断はまだ行っていない.

Yuya Watanabe さんが約13年前に更新

記述順が前後するが,本チケットの問題の確認方法を記載する.

確認方法

  1. OpenPNE3のソースを取得し,セットアップの準備を行う.
  2. config/OpenPNE.yml内default_plugin_channel_serverの設定をlocalhostにする(チャンネルサーバがつながらない状態にする)
  3. 「symfony openpne:install」を実行する

特記事項

単純にネットワークに繋げない状態にするだけではconfig/OpenPNE.yml内plugin_list_base_urlの設定にあるURL先からプラグインリストが得られず,本チケットでの修正部分を実行しない.

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

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

Mutsumi Imamura さんが約13年前に更新

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

kaoru n さんが10年以上前に更新

  • 関連している Bug(バグ) #3603: pear.symfony-project.com に接続できない時、php ./symfony openpne:install時にエラーが出る を追加

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

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

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