web-dev-qa-db-ja.com

共有サーバーでDrush 9を実行するときのエラー

Media Temple(共有ホスティング)にDrush 9をインストールしようとしています。サーバーにはDrupal 7(D7)サイトがいくつかありますが、最近Drupal 8(D8))に移行し始めました。 DrushはD7サイト用にすでにグローバルにインストールされているため、.bash_profileで次の行を使用して、D8サイト用にエイリアス「drush9」を作成しました。

alias drush9="~/domains/sitename.com/vendor/bin/drush"

しかし、drush9を実行すると、次のエラーが返されました。

Failed loading /usr/local/php-5.6.21/lib/php/20131226/php_opcache.so:  /usr/local/php-5.6.21/lib/php/20131226/php_opcache.so: cannot open shared object file: No such file or directory
The following restricted PHP modes have non-empty values:            [error]
open_basedir. This configuration is incompatible with drush.  Please
check your configuration settings in /home/999/etc/php.ini or in
your drush.ini file; see examples/example.drush.ini for details.
Execute a drush command. Run `drush help [command]` to view command-specific help.  Run `drush
topic` to read even more documentation.

少し前にopcacheを有効にしようとしましたが、そのライブラリはサーバー上に存在しないようです。そこで、このエラーを解消するために、php.iniでopcacheを無効にしました。

無効にしたら、drush9を再度実行したところ、次のエラーが発生しました。

The following restricted PHP modes have non-empty values: {open_basedir}. This configuration is incompatible with drush.  {Please check your configuration settings in /home/999/etc/php.ini or in your drush.ini file; see examples/example.drush.ini for details.}

Stack Exchangeを検索した後、このエラーの解決策を見つけました: Drush Open_BaseDir Error したがって、drush9エイリアスを次のように変更しました:

alias drush9="/usr/bin/php5 -c ~/domains/sitename.com/vendor/bin/drush"

今、drush9を実行すると、PHP deprecations:

PHP Deprecated:  Comments starting with '#' are deprecated in /nfs/c11/h04/mnt/999/domains/sitename.com/vendor/drush/drush/drush on line 1 in Unknown on line 0

このエラーは私には適切ではないようです。私はどのDrushファイルも変更していないので、それらに問題はないはずです。また、drushは私のローカル環境で完全に動作します。それでも、「#」を「;」に置き換えてみました。非推奨エラーはなくなりましたが、drush9コマンドは実行されません。エラーは発生せず、アイドル状態になります。

行方不明のものはありますか? Drush 9を運用サーバーにインストールするためのベストプラクティスはありますか?ヒントがあれば大歓迎です。

便利な場合は、ローカルでdrupalvmを使用しています。 Drushは、VMが起動するとcomposerで自動的にインストールされます。次に、生成されたDrushファイルをgit経由でサーバーに転送しました。

編集:Gregのアドバイスに従って、drushエイリアスを修正しました。現在はalias drush9='/usr/bin/php5-latest -c /home/###/etc/php.ini /home/###/domains/sitename/vendor/bin/drushとして入力されています。残念ながら、それは私の問題を解決しませんでした。 drush9を実行してもエラーはスローされませんが、コマンドは正常に実行されません。それは無限に回転します。

drushランチャー もインストールしてみました。サーバーでwgetを実行した後、エイリアス "drush90"にファイルdrush.pharファイルの場所を指定しました。サイトディレクトリの外でdrush90を実行すると、次が返されます。

    The Drush launcher could not find a Drupal site to operate on. Please do *one* of the following:
  - Navigate to any where within your Drupal project and try again.
  - Add --root=/path/to/drupal so Drush knows where your site is located.
  - Add a site alias so Drush knows where your site is located.

何が返されたかを考えると、適切に接続されているようですが、サイトディレクトリで実行しても機能しません。私のdrush9エイリアスと同様に、drush90を実行してもdrushは正常に実行されません。それは無限に回転し、実行に失敗し、エラーをスローしません。

編集:drush9 -vvv -d statusをウェブサイトのディレクトリの外で実行すると、次が返されます:

    [bootstrap] Drush bootstrap phase: bootstrapDrupalDatabase() [0.41 sec, 9.89 MB]
 [bootstrap] Successfully connected to the Drupal database. [0.41 sec, 9.89 MB]
 [bootstrap] Drush bootstrap phase: bootstrapDrupalFull() [0.41 sec, 9.89 MB]
 [debug] Start bootstrap of the Drupal Kernel. [0.41 sec, 9.89 MB]
 [debug] Finished bootstrap of the Drupal Kernel. [0.57 sec, 14.94 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\config\ConfigCommands [0.68 sec, 17.47 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\config\ConfigExportCommands [0.69 sec, 17.53 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\config\ConfigImportCommands [0.7 sec, 17.56 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\core\BatchCommands [0.7 sec, 17.59 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\core\CliCommands [0.7 sec, 17.6 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\core\DrupalCommands [0.71 sec, 17.61 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\core\ImageCommands [0.71 sec, 17.64 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\core\LocaleCommands [0.71 sec, 17.66 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\core\QueueCommands [0.72 sec, 17.68 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\core\RoleCommands [0.72 sec, 17.71 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\core\StateCommands [0.73 sec, 17.76 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\core\UserCommands [0.73 sec, 17.79 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\core\ViewsCommands [0.74 sec, 17.86 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\core\WatchdogCommands [0.74 sec, 17.92 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\pm\PmCommands [0.75 sec, 17.97 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\pm\ThemeCommands [0.76 sec, 18.01 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\sql\SanitizeCommands [0.76 sec, 18.02 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\sql\SanitizeCommentsCommands [0.76 sec, 18.03 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\sql\SanitizeSessionsCommands [0.76 sec, 18.05 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\sql\SanitizeUserFieldsCommands [0.77 sec, 18.06 MB]
 [debugnotify] Add a commandfile class: Drush\Drupal\Commands\sql\SanitizeUserTableCommands [0.77 sec, 18.07 MB]
 Drupal version   : 8.4.2                                                                
 Site URI         : default                                                              
 DB driver        : mysql                                                                
 DB hostname      : internal-db.s###.gridserver.com                                   
 DB port          :                                                                      
 DB username      : db###                                                             
 DB name          : db###_analytics                                                   
 Database         : Connected                                                            
 Drupal bootstrap : Successful                                                           
 Default theme    : nellek                                                               
 Admin theme      : seven                                                                
 PHP binary       : /usr/local/php-7.0.6/bin/php                                         
 PHP config       : /nfs/c11/h04/mnt/###/etc/php.ini                                  
                    /nfs/c11/h04/mnt/###/users/.home/.drush/drush.ini                 
 PHP OS           : Linux                                                                
 Drush script     : /home/###/domains/sitename/vendor/bin/drush   
 Drush version    : 9.0.0-beta7                                                          
 Drush temp       : /tmp                                                                 
 Drush configs    : /nfs/c11/h04/mnt/###/domains/sitename/vendor/ 
                    drush/drush/drush.yml                                                
 Drush aliases    :                                                                      
 Install profile  : standard                                                             
 Drupal root      : /nfs/c11/h04/mnt/###/domains/sitename/web     
 Site path        : sites/default                                                        
 Files, Public    : sites/default/files                                                  
 Files, Temp      : /tmp 

Webサイトディレクトリの外でdrush9 crを実行すると、エラーが発生します。

    drush9 cr

Fatal error: Uncaught TypeError: Return value of Doctrine\Common\Annotations\AnnotationRegistry::reset() must be an instance of Doctrine\Common\Annotations\void, none returned in /nfs/c11/h04/mnt/###/domains/sitename/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php:55
Stack trace:
#0 /nfs/c11/h04/mnt/###/domains/sitename/web/core/lib/Drupal/Component/Annotation/Plugin/Discovery/AnnotatedClassDiscovery.php(113): Doctrine\Common\Annotations\AnnotationRegistry::reset()
#1 /nfs/c11/h04/mnt/###/domains/sitename/web/core/lib/Drupal/Core/Entity/EntityTypeManager.php(106): Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery->getDefinitions()
#2 /nfs/c11/h04/mnt/###/domains/sitename/web/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php(174): Drupal\Core\Entity\EntityTypeManager->findDefinitions()
#3 /nfs/c11/h04/mnt/###/domains/sitename/web/core/lib/Drupal/Componen in /nfs/c11/h04/mnt/###/domains/sitename/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php on line 55
 [error]  Drush command terminated abnormally due to an unrecoverable error.
Error: Uncaught TypeError: Return value of Doctrine\Common\Annotations\AnnotationRegistry::reset() must be an instance of Doctrine\Common\Annotations\void, none returned in /nfs/c11/h04/mnt/###/domains/sitename/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php:55
Stack trace:
#0 /nfs/c11/h04/mnt/###/domains/sitename/web/core/lib/Drupal/Component/Annotation/Plugin/Discovery/AnnotatedClassDiscovery.php(113): Doctrine\Common\Annotations\AnnotationRegistry::reset()
#1 /nfs/c11/h04/mnt/###/domains/sitename/web/core/lib/Drupal/Core/Entity/EntityTypeManager.php(106): Drupal\Component\Annotation\Plugin\Discovery\AnnotatedClassDiscovery->getDefinitions()
#2 /nfs/c11/h04/mnt/###/domains/sitename/web/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php(174): Drupal\Core\Entity\EntityTypeManager->findDefinitions()
#3 /nfs/c11/h04/mnt/###/domains/sitename/web/core/lib/Drupal/Componen in /nfs/c11/h04/mnt/###/domains/sitename/vendor/doctrine/annotations/lib/Doctrine/Common/Annotations/AnnotationRegistry.php, line 55
1
Kellen

複数の構成の問題があり、1つずつ解決する必要があります。


エラー2002(HY000):ソケット/var/run/mysqld/mysqld.sockを介してローカルMySQLサーバーに接続できません。

MySQLサーバーが稼働中であり、ソケットファイルが/var/run/mysqld/mysqld.sockに存在することを確認してください。サービスは正常に実行されているが、ソケットパスが正しくない場合は、php.iniまたは設定ファイルで変更できます。

次の方法でSQL接続を確認します。

drush sql-connect

正しい詳細を使用していることを確認してください。

また、MySQLとPHPが同じソケットファイルを使用していることを確認してください。次のコマンドで確認してください。

mysql_config --socket
php -i | grep -w default_socket # Use /usr/bin/php5 in your case.

参照: drushを使用する場合、 `PDOException:SQLSTATE [HY000] [2002] No such file or directory`があります


致命的なエラー:キャッチされなかったTypeError:Doctrineの戻り値...

これは、DrushをPHP 7.0.xで実行していることと関連しています。ここで、Doctrine\Common\AnnotationsはPHP 7.1。ソース

これはまた、エイリアスが実際にDrushをPHP5.6で実行していないことを示しています。


drushプロセスはスタックしたままです。

drush-vvv(詳細)および-d(デバッグ)フラグを付けて実行して、問題がないか確認する必要があります。

それでもプロセスが完全にスタックしている場合は、Linuxでstraceなどのデバッガーを使用して、プロセスの詳細を確認できます。

strace -f /path/to/php drush status
2
kenorb

上記のエイリアスにタイプミスがあります。 -cフラグの後には、php.iniファイルへのパスを指定する必要があります。

alias drush9='/usr/bin/php5 -c /path/to/php.ini ~/domains/sitename.com/vendor/bin/drush
3
greg_1_anderson