0

我遇到了客户的 Drupal 站点的问题。他安装了许多 D6,还有一个他刚刚开始的新 D7。所有这些站点都在同一个共享主机包上。

问题是仅在 D7 站点上运行某些drush命令时。D6 站点上没有问题。D7网站上的具体错误如下:drush up

foo@bar [~/www/foo]# drush up
Command pm-update needs a higher bootstrap level to run - you will need to invoke drush   [error]
from a more functional Drupal environment to run this command.
Command pm-update needs the following modules installed/enabled to run: update.           [error]
The drush command 'up' could not be executed.                                             [error]
Drush was not able to start (bootstrap) the Drupal database.                              [error]
Hint: This may occur when Drush is trying to:
 * bootstrap a site that has not been installed or does not have a configured database. In
this case you can select another site with a working database setup by specifying the URI
to use with the --uri parameter on the command line. See `drush topic docs-aliases` for
details.
 * connect the database through a socket. The socket file may be wrong or the php-cli may
have no access to it in a jailed shell. See http://drupal.org/node/1428638 for details.

Drush was attempting to connect to:
 Drupal version         :  7.28
 Site URI               :  http://default
 Database driver        :  mysql
 Database username      :  username_foo
 Database name          :  database_foo
 PHP configuration      :
 PHP OS                 :  Linux
 Drush version          :  7.0-dev
 Drush temp directory   :  /tmp
 Drush configuration    :
 Drush alias files      :
 Drupal root            :  /home/foo/www/foo
 Site path              :  sites/default

我能找到的所有内容(实际上是错误消息中的链接host)都说解决方案是将文件中的值settings.phplocalhost更改为127.0.0.1。然而,这并不是我们的解决方案。

  • 前端站点连接到数据库没有问题,而且drush它本身在很多情况下似乎也是如此。
  • drush sql-connect将生成一个可用于连接 MySQL 的字符串。
  • drush sql-cli将成功连接到 MySQL
  • settings.php文件肯定在一个名为default(path: ) 的文件夹中,我在指定和选项www/foo/sites/default时得到完全相同的错误。--root--uri
  • Drush 最初是一个 ~5.x 版本,它也有同样的问题。我们更新到 ~7.x 以尝试消除错误。主机值settings.php一直localhost以及127.0.0.1同样糟糕的结果。

我们已经验证 MySQL 可以通过 PHP CLI 中的套接字使用。Drush 是最新的并且是全新安装的。Drupal 7 站点是全新安装的。

我不知所措。为什么这适用于 D6 站点,而不适用于 D7?有什么建议么?

4

2 回答 2

0

您的 settings.php 文件是否位于名为“default”的文件夹中?如果没有,您可能需要使用--uri=mysite.com或告诉 Drush 在哪里可以找到它-l mysite.com

有几种方法可以指定 Drush 将针对哪个 Drupal 站点。最基本的选项相当冗长;跑:

$ drush --root=/path/to/drupal --uri=http://example.com status

你可以用稍微不同的语法来做同样的事情:

$ drush /path/to/drupal#example.com status

您还可以通过将 cwd 设置为包含站点的 settings.php 文件的文件夹来隐式指定 Drupal 站点:

cd /path/to/drupal/sites/default # 或 /path/to/drupal/sites/mysite.com,视情况而定

$ drush status

在上述所有情况下,如果 settings.php 位于名为“default”的文件夹中,则无需指定 --uri 组件;例如,您可以 cd /path/to/drupal 后跟 drush status,然后会找到正确的 Drupal 站点。如果 settings.php 不在名为“default”的文件夹中,那么您需要指定 --uri 或 cd 到包含 settings.php 文件的文件夹。

资源

于 2014-05-26T04:37:30.740 回答
0

根据此消息:

pm-update需要安装/启用以下模块才能运行:update

Drush 需要启用更新模块,因此以下命令应该可以解决问题:

drush -y en update
于 2017-09-27T15:46:57.533 回答