Drush已安装并正在运行;即使指定了uri也未找到Drupal网站


9

经过反复的考验和磨难,我认为我已经匆匆忙忙准备咆哮。太激动了。但是然后,没有喜悦...

Drush正在工作。这些站点可以通过MAMP正常运行。无论如何,“ drush cc all”命令都将返回:

No Drupal site found, only 'drush' cache was cleared.                                          [warning]
'all' cache was cleared.                                                                       [success]

这个问题困扰了drupalcon的参与者和经验丰富的开发人员。有任何想法吗?

我在使用MAMP(免费)版本3.0.5的Mac OS 10.9.3上

这是我的比赛状态:

 Drupal version         :  7.29-dev                               
 Site URI               :  http://default                         
 Database driver        :  mysql                                  
 Database hostname      :  localhost                              
 Database username      :  db_user                           
 Database name          :  db_name                      
 PHP executable         :  /usr/bin/php                           
 PHP configuration      :                                         
 PHP OS                 :  Darwin                                 
 Drush version          :  7.0-dev                                
 Drush temp directory   :  /tmp                                   
 Drush configuration    :                                         
 Drush alias files      :                                         
 Drupal root            :  /Applications/MAMP/htdocs/mysite.dev 
 Site path              :  sites/default    

试图从中执行催促/Applications/MAMP/htdocs/mysite.dev; 来自/Applications/MAMP/htdocs/mysite.dev/sites/default; 和使用drush cc all --uri=http://localhost/mysite.dev

尝试从网站/默认运行奔跑。结果相同。


您的数据库连接位于站点/默认文件夹中吗?如果是这样,请尝试仅从该文件夹运行drush cc。我不认为--uri对于drush cc是有效的论点
chadpeppers 2014年

尝试从网站/默认运行奔跑。结果相同。
jenpasch 2014年

您是否找到了解决方案?我有相同的问题和类似的设置。
2014年

我没有。我还是没精打采。
jenpasch 2014年

你看过这个吗?它看起来关闭顶部类似:drupal.stackexchange.com/questions/98802/...
Laryn - CEDC.org

Answers:


9

请仔细检查以下所有要点是否都得到解决。

  1. 您正在drushDrupal根文件夹或包含settings.php文件的文件夹中运行。
  2. mysql命令存在(并且在您的中PATH)。

    请注意,数据库命令取决于您driver在设置文件中设置的数据库(例如,sqlcmd对于SQL Server;有关详细信息,请检查Drush中的不同类/src/Sql)。

    如果在任何文件夹中运行该命令时缺少该命令,请确保将其二进制文件的路径添加到PATH系统变量中。

  3. 您的PHP已启用PDO扩展(通过:php -m | grep pdo或选中drush sqlc)。

  4. 您的PHP已启用数据库扩展名(例如mysqli)(检查方式:)php -m | grep mysql

要调查到底出了什么问题,请drush使用-v(详细)和-d(调试)标志运行,例如

drush -vd status
drush -vd ev "echo 123"
drush -vd cc all

并检查是否有任何错误。


未安装PHP PDO的mysql扩展。检查您的php.ini,以了解如何启用它。

安装数据库扩展名(例如mysqli)(按照第4点的要求)。

对于MAMP,请参阅:Drush在Mac上不起作用


曼普

由于您使用的是MAMP,因此请确保您运行的php二进制文件版本正确(按which php),并且指向/Applications/MAMP/bin/php/php5.X.X/bin/php。如果没有,请将路径添加到您PATHrc文件中(例如~/.bashrc):

# For MAMP (OSX)
PHP_VER="5.6.10" # Or: 5.4.19/5.5.3 (check by: $ ls /Applications/MAMP/bin/php/php*)
export PATH="$PATH:/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php/php$PHP_VER/bin:/Developer/usr/bin"

XAMPP

对于Windows XAMPP,类似的操作,将您添加C:\xampp\mysql\bin到您的环境变量中PATH

调试

如果您的drush命令由于某种原因而失败,那么这里是建议的调试drush(shell命令)的步骤。

  1. 安装并启用PHP xdebug扩展。通过验证php71 -i | grep xdebug
  2. 验证Drupal根目录设置文件数据库是否存在drush status
  3. 生成跟踪文件:

    drush ev "xdebug_start_trace(); drush_drupal_cache_clear_all(); echo xdebug_get_tracefile_name(); xdebug_stop_trace();"

    要么:

    drush ev "xdebug_start_trace(); print_r(_core_site_status_table()); echo xdebug_get_tracefile_name(); xdebug_stop_trace();"

    如果为其他PHP版本启用了xdebug,请使用进行指定DRUSH_PHP=/path/to/php

    如果成功,则在末尾打印跟踪输出文件,因此请记下它。

  4. 现在打开并检查跟踪文件。

  5. 要使用干净的Drupal测试或比较drush输出,可以通过以下方法在空文件夹中安装新的Drupal:

    drush -y qd --no-server --core=drupal-8
    cd quick-drupal-*/drupal*
    drush status

2
+1非常好的答案,超越了显而易见的检查settings.php和db。特别是对我drush sqlc来说,这对我有所帮助,因为它表明数据库无法与用户连接,这导致我检查用户名和密码,并发现我设置了错误的密码。谢谢!
therobyouknow

1
我有一个与@therobyouknow类似的问题-我有一个~/.my.cnf文件,该文件为mysql连接指定了用户,但没有密码。我认为这导致使用该文件中的用户以及该站点的密码而导致用户大量使用,这是无效的。在我的~/.my.cnf文件中添加密码,或删除该文件,这完全解决了问题
artfulrobot

4

在运行MAMP的Mac上,新的Drush 8遇到了相同的问题

您需要将此添加到.bash_profile导出PATH = / Applications / MAMP / Library / bin /:$ PATH。

一旦添加,请确保打开一个新的终端窗口,因为它将无法在您当前的窗口上正常工作,因为bash需要重新启动。


1
这条简单的线对我来说就是固定的。我在这上面拔头发。进行更新/更改时,请打开一个新的终端窗口!否则,您的新设置将不会生效。
erier

1

正如@kenorb所说,use drush -vd cc all,它将使您对正在发生的事情有个很好的了解。就我而言,这是由于错误"mysql command not found"。我通过在环境变量中设置mysql的路径来解决它。我觉得您也需要检查Drush和MySQL的路径,看看是否可行。

谢谢!!


1

要使用Drush清除“所有缓存”,您必须在站点目录所在的终端上进入站点目录,如www或htdocs目录中的站点目录,然后在该目录下运行命令:

drush cc all

0

签出Drush包configure.md,它为平台提供了许多有用的提示,因此MAMP部分为:

Mamp的其他配置:

MAMP的用户将需要在其PATH中手动指定在命令行界面中使用哪个版本的php和MySQL。这独立于MAMP应用程序设置中选择的php版本。在OS X下,在您的主文件夹中编辑(或创建,如果尚不存在)一个文件.bash_profile。

要使用php 5.3.x,请将此行添加到.bash_profile:

export PATH="/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php5.3/bin:$PATH"

如果要使用php 5.4.x,请添加以下行:

export PATH="/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php5.4/bin:$PATH"

如果您使用MAMP 3(默认情况下为PHP 5.5.14)并想使用php 5.5.x,请添加以下代码:

export PATH="/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php/php5.5.14/bin:$PATH"

如果您具有MAMP v.1.84或更低版本,则此配置将适用于两个版本的PHP:

export PATH="/Applications/MAMP/Library/bin:/Applications/MAMP/bin/php5/bin:$PATH"

如果您已执行此操作,但仍从PDO :: __ construct收到“没有这样的文件或目录”错误,请尝试以下操作:

bash sudo mkdir /var/mysql sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /var/mysql/mysql.sock

另外,在成功使用drush之前,您可能需要调整php.ini设置。有关如何进行的更多详细信息,请参见下面的配置PHP.INI。


0

运行MAMP Pro,可以通过将以下行添加到我的~/.bash_profile文件中来使其工作:

export PATH=$PATH:/Applications/MAMP/Library/bin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.