プロジェクト

全般

プロフィール

Bug(バグ) #3603

pear.symfony-project.com に接続できない時、php ./symfony openpne:install時にエラーが出る

kaoru nほぼ10年前に追加. 6年以上前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2017-05-26
期日:
進捗率:

100%

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

説明

現象

pear.symfony-project.com に接続できない時、下記のエラーが発生しインストールが中断する

>> sfPearFrontendPlugin Attempting to discover channel "pear.symfony-project.com"...
>> sfPearFrontendPlugin Attempting fallback to https instead of http on channel
>> sfPearFrontendPlugin "pear.symfony-project.com"...

  Unable to register channel "pear.symfony-project.com" 

原因

openpne:install 時、opPluginManager の初期化を行うが、初期化の処理の中で channel 情報取得のため、
pear.symfony-project.com に接続を試みるが、接続できない状態であれば、エラーとなり、例外が投げられ、インストールが中断される。

修正内容

openpne:install 時に pear.symfony-project.com や plugins.symfony-project.org に接続を行わないように修正


子チケット

Backport(バックポート) #4198: pear.symfony-project.com に接続できない時、php ./symfony openpne:install時にエラーが出るFixed(完了)Shinichi Urabe

Backport(バックポート) #4199: pear.symfony-project.com に接続できない時、php ./symfony openpne:install時にエラーが出るFixed(完了)Shinichi Urabe


関連するチケット

関連している OpenPNE 3 - Bug(バグ) #1780: php ./symfony openpne:install時にエラーが出る Fixed(完了) 2010-11-11
コピー先 OpenPNE 3 - Backport(バックポート) #4198: pear.symfony-project.com に接続できない時、php ./symfony openpne:install時にエラーが出る Fixed(完了) 2017-05-26
コピー先 OpenPNE 3 - Backport(バックポート) #4199: pear.symfony-project.com に接続できない時、php ./symfony openpne:install時にエラーが出る Fixed(完了) 2017-05-26

関係しているリビジョン

リビジョン f7752c57 (差分)
Shinichi Urabeほぼ7年前に追加

(refs #3603) Fixed so that installation can be done even if it can not connect to channel server "pear.symfony-project.com", "plugins.symfony-project.org".

リビジョン 5ed32393
kaoru n6年以上前に追加

Merge pull request #463 from ShinichiU/t-3603

(refs #3603) Fixed so that installation can be done even if it can no…

履歴

#1 kaoru nほぼ10年前に更新

  • 関連している Bug(バグ) #1780: php ./symfony openpne:install時にエラーが出る を追加

#2 kaoru n約7年前に更新

取り急ぎの回避策→ http://sns.openpne.jp/communityTopic/603

registerChannel('pear.symfony-project.com') してるところを通らないようにする方法を教えてもらいましたので共有します。
※ OpenPNE-3.8.23 インストールと opPlugin:install で opCommunityTopickPlugin インストールして軽く動作確認しかしてないです。

====================
--- a/lib/plugin/opPluginManager.class.php
+++ b/lib/plugin/opPluginManager.class.php
@@ -54,6 +54,13 @@ class opPluginManager extends sfSymfonyPluginManager
catch (sfPluginException $e) {}
}

+ public function configure()
+ {
+ // register callbacks to manage web content
+ $this->dispatcher->connect('plugin.post_install', array($this, 'listenToPluginPostInstall'));
+ $this->dispatcher->connect('plugin.post_uninstall', array($this, 'listenToPluginPostUninstall'));
+ }
+
public function getChannel()
{
return $this->getEnvironment()->getRegistry()->getChannel($this->channel);
====================

#3 Shinichi Urabeほぼ7年前に更新

  • ステータスNew(新規) から Accepted(着手) に変更
  • 担当者Shinichi Urabe にセット

#3603-2 の修正が妥当かを含めて調査

#4 Shinichi Urabeほぼ7年前に更新

opPluginManager::configure() を定義し、 parent::configure() つまり sfSymfonyPluginManager::configure() を呼ばない処理としている。

  • sfSymfonyPluginManager::configure() においては以下の処理がある
    • $this->environment->registerChannel('pear.symfony-project.com', true);
    • $this->environment->registerChannel('plugins.symfony-project.org', true);
    • $this->registerSymfonyPackage();
    • $this->dispatcher->connect('plugin.post_install', array($this, 'listenToPluginPostInstall'));
    • $this->dispatcher->connect('plugin.post_uninstall', array($this, 'listenToPluginPostUninstall'));
  • そのうち #3603-2 の修正を行うことで呼び出される処理を以下の 2 つとしている
    • $this->dispatcher->connect('plugin.post_install', array($this, 'listenToPluginPostInstall'));
    • $this->dispatcher->connect('plugin.post_uninstall', array($this, 'listenToPluginPostUninstall'));

これらの処理が呼び出されないことで起きる懸念を調査

  • $this->environment->registerChannel('pear.symfony-project.com', true);
  • $this->environment->registerChannel('plugins.symfony-project.org', true);
  • $this->registerSymfonyPackage();

#5 Shinichi Urabeほぼ7年前に更新

pear.symfony-project.com や plugins.symfony-project.org が落ちた時もだが、設置環境からこれらのドメインの外向けのアクセスを制限しているような環境も当然、インストールできない

#6 Shinichi Urabeほぼ7年前に更新

symfony の channel サーバ使って、いくつか symfony のプラグインをインストールしようとしたが symfony plugin:install は動かない

$ php symfony plugin:install sfImageTransformPlugin
>> plugin    installing plugin "sfImageTransformPlugin" 

  No release available for plugin "sfImageTransformPlugin"  

$ php symfony plugin:install sfDoctrineGuardPlugin
>> plugin    installing plugin "sfDoctrineGuardPlugin" 

  No release available for plugin "sfDoctrineGuardPlugin"  

#7 Shinichi Urabeほぼ7年前に更新

opPluginManager::configure() が呼ばれる機能

  • openpne:install
  • openpne:fast-install
  • opPlugin:install
  • opPlugin:uninstall

これらの機能において以下が呼び出されなくても、動作は問題ない

  • $this->environment->registerChannel('pear.symfony-project.com', true);
  • $this->environment->registerChannel('plugins.symfony-project.org', true);
  • $this->registerSymfonyPackage();

#8 Shinichi Urabeほぼ7年前に更新

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

#9 Shinichi Urabeほぼ7年前に更新

  • 説明 を更新 (diff)
  • 対象バージョンOpenPNE 3.9.0 にセット

#10 Shinichi Urabeほぼ7年前に更新

#11 Shinichi Urabeほぼ7年前に更新

#12 Rimpei Ogawaほぼ7年前に更新

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

#14 kaoru n6年以上前に更新

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

マージしました

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