it-swarm-ja.com

Drushが検出しないdrupalサイトサブディレクトリの下のインストール

Drush 4と5を問題なく使用しています。 composerを使用して新しいDrush 7.0-devをダウンロードしてインストールしたので、問題が発生しています。つまり、デフォルトでは検出されませんdrupalインストール中にサイトのサブフォルダ、

Drushはサイトのルートディレクトリで実行されています。

_drupal7/sites/example.com/modules/views$ drush status

 Drupal version                  :  7.30                               
 Site URI                        :  http://example.com              
 Database driver                 :  mysql                              
 Database hostname               :  localhost                          
 Database port                   :                                     
 Database username               :  example_user                    
 Database name                   :  example_db                     
 Database                        :  Connected                          
 Drupal bootstrap                :  Successful                         
 Drupal user                     :                                     
 Default theme                   :  bartik                             
 Administration theme            :  seven                              
 PHP executable                  :  /usr/bin/php                       
 PHP configuration               :  /etc/php5/cli/php.ini              
 PHP OS                          :  Linux                              
 Drush version                   :  7.0-dev                            
 Drush temp directory            :  /tmp                               
 Drush configuration             :                                     
 Drush alias files               :                                     
 Drupal root                     :  drupal7
 Site path                       :  sites/example.com               
 File directory path             :  sites/example.com/files         
 Temporary file directory path   :  /tmp                            
_

Drushは、sitesサブディレクトリの下で実行され、

_drupal7/sites/example.com/modules/views$ drush status

 Drupal version         :  7.30                               
 PHP executable         :  /usr/bin/php                       
 PHP configuration      :  /etc/php5/cli/php.ini              
 PHP OS                 :  Linux                              
 Drush version          :  7.0-dev                            
 Drush temp directory   :  /tmp                               
 Drush configuration    :                                     
 Drush alias files      :                                     
 Drupal root            :  drupal7 
_

したがって、Drushを構成するにはどうすればよいですか?Drushを機能させるためにできることはありますか?常に_--uri_または_-l_フラグやその他のオプションを使用したくありません。

更新

また、モジュールをダウンロードすると、_sites/all/modules_ディレクトリにダウンロードされます

_drupal7/sites/example.com/modules$ drush dl webform
Project webform (7.x-3.20) downloaded to drupal7/sites/all/modules/webform.                                     [success]
_

しかし、私がsites-rootディレクトリにいる場合、それはうまくいきます、

_drupal7/sites/example.com$ drush dl webform
Project webform (7.x-3.20) downloaded to /home/sysop/project/drupal7/htdocs/sites/heisenberg.com/modules/webform.                          [success]
_
4
shrish

そのコードを使用して、sites\allフォルダーにYOUR_SITE_NAME.aliases.drushrc.phpという名前のエイリアスconfファイルを追加する必要があります。

// The site in sites/YOUR_SITE_NAME/ 
$aliases['YOUR_SITE_NAME.local'] = array(
  'uri' => 'YOUR_SITE_NAME_URI',
  'root' => '/path/to/drupal_root_folder',
  'path-aliases' => array(
    '%dump-dir' => '/tmp'
  ),
);

次に、キャッシュをクリアします。drushcache-clear drush。

エイリアスをテストします:@YOUR_SITE_NAME.local status

例のためにコマンドを実行するには:@YOUR_SITE_NAME.local mb MODULE_NAME hook1 hook2 --write


UPDATE:多くのサイトのDrushサイトエイリアスを自動的に作成するには、このコードをaliases.drushrc.phpファイルに配置します。 Drushは、ホームディレクトリの「.drush」フォルダでaliases.drushrc.phpを探します(このファイルの場所を確認するには、 this post を参照してください)。

$aliases = array();
$drupal = '/var/www/drupal';

// Automatic alias for each Drupal site
$site = new DirectoryIterator($drupal . '/sites');
while ($site->valid()) {
  // Look for directories containing a 'settings.php' file
  if ($site->isDir() && !$site->isDot() && !$site->isLink()) {
    if (file_exists($site->getPathname() . '/settings.php')) {
      // Add site alias
      $basename = $site->getBasename();
      $aliases[$basename] = array(
        'uri' => $basename,
        'root' => $drupal,
      );
    }
  }
  $site->next();
}

// Get all site aliases
$all = array();
foreach ($aliases as $name => $definition) {
  $all[] = '@' . $name;
}

// 'All' alias group
$aliases['all'] = array(
  'site-list' => $all,
);

これを読むこともできます: 独自のDrushエイリアスを作成する 。リモートシステムとローカルシステム間の同期の管理についても考えることができます( source )。

EDIT:ericxコメントに従って、bash-completionの追加を検討してください。 Drushには、エイリアス補完を提供するbash補完ファイルdrush.completion.shが付属しています。

4
Kojo

D7の安定バージョンである6.xバージョンを入手することをお勧めします(そうです、バージョン管理は少し混乱します:)。あなたはそれをインストールすることができるはずです

composer global require drush/drush:6.*
2
mojzis

これはばかげて聞こえるかもしれませんが、drupal7/sites/example.com /にsettings.phpファイルがあり、drush/drupalがそのファイルを編集するためのアクセス権を持っていることを確認してください

-または-

--uriパラメータを使用してみます。

drush dl --uri = http://example.com webform

0
HumanSky

drupalディレクトリの再インストール後のDrush内からDrushを実行できませんでした。そのディレクトリ内にDrushへのシンボリックリンクがあり、それが再帰を引き起こしていたため、Drushが失敗しました。シンボリックリンクを削除しましたそして、ディレクトリから再度drushを実行することができました。

0
dresh

Drush Aliases を見てください。

それらは基本的にあなたにtargetあなたのDrupalインストールをあなたのdrushコマンドを実行するためのインストールを許可します。

0
sshrestha

私の場合、mysql-clientをインストールする必要があることがわかりました。

apt-get install mysql-client

私は次のような状況にありました。drush4、5、および6がうまくいきました。 drush 7、8は機能しません(説明しているエラーを含むさまざまなエラー)。また、MySQLデータベースは別のサーバーにありました。

HTH、アレクサンダー