Drush:远程服务器上的权限被拒绝

Posted

技术标签:

【中文标题】Drush:远程服务器上的权限被拒绝【英文标题】:Drush: permission denied on remote server 【发布时间】:2015-12-01 16:45:49 【问题描述】:

我正在尝试在远程服务器上设置drush。 (提供商的网络服务器)

我通过 SSH 用 composer 安装了drush,但是当我尝试运行它时,我得到了

-bash: /data/web/myusername/.composer/vendor/drush/drush/drush: Permission denied

drush 拥有-rwxr-xr-x 权限

我将如何验证是否只是提供程序不允许我执行drush 或只是一个错误?

编辑:我发现我可以用bash drush 运行drush,毕竟这似乎是一个权限问题。

现在我本地机器上的drush 会调用远程drush 而没有bash,那么我该如何更改它/解决方法?

【问题讨论】:

当你ssh到远程机器时,使用什么shell? echo $SHELL 应该告诉你。可能是 bash 不是您登录时的 shell,因此您可能需要查看是否可以自行设置默认 shell,或者在远程服务器上执行类似 alias drush='bash drush' 的操作。 嗨,使用了 bash。如果我用sh 切换到sh,我仍然不能用./drush 运行drush,但sh drush 可以。我可以在我的本地计算机上重现该错误:如果我创建了一个脚本并且我没有授予它执行权限,我可以使用bash script 运行它,但不能使用./script 运行它。使用别名似乎不起作用,因为我的本地 drush 作为脚本不会加载别名。但是,是的,我正在寻找那个方向的东西。 我想我预计会出现不同的错误,但是 ~/.drush/cache 权限设置是否正确? 在那里得到rwxr-xr-x 嗯...有趣。好的,我唯一一次看到这种情况是 drush 未设置为可执行,我知道您已经在上面进行了验证,但您可能只想检查 which drushls -l ~/.composer/vendor/drush/drush/drush。抱歉冗余,但这确实是我唯一一次看到这个错误。您还应该验证在远程服务器上设置的这些权限也可以执行。 【参考方案1】:

如果在运行 drush 命令时仍然有人面临权限问题,请运行以下命令 sudo chmod -R 777 /vendor/drush

注意 Drupal 8 Drush 命令行工具 9.5.2

【讨论】:

【参考方案2】:

我使用 composer 安装了 drush 8 并且开箱即用,甚至尝试过 drush version 在我执行 chmod + x on 之前,我得到了“权限被拒绝”:

/vendor/bin/drush
/vendor/drush/drush
/vendor/drush/drush.launcher

接下来,我必须使用本地 drush.ini 覆盖 php.ini:

disable_functions = 

列表中有任何禁用的功能会导致 drush 每次都发出错误。这是在 Krystal 共享主机上。

【讨论】:

这解决了我的问题,添加了 drush.ini 和 disable_functions = ,由于某种原因,当我从 9.7.4 升级到 drush 10.3.4 时,我不得不这样做,将 drush.ini 添加到~ 文件夹(Linux/MacOSX 中的主文件夹)【参考方案3】:

如果你是 centos 或 ubuntu 用户,请这样做 您的默认 /vendor/drush 权限是 755 但 drush 需要权限 777

cd /var/www/html

查看vendor文件夹的权限

ll

这里的默认权限是 755

chmod -R 777 /vendor/drush 

【讨论】:

无论您想要完成什么,chmod 777 都是错误危险的。您应该恢复正常权限立即,在您真正了解它们的工作原理之前不要再触摸它们。【参考方案4】:

使 drush 成为可执行文件:

chmod +x /data/web/myusername/.composer/vendor/drush/drush/drush

【讨论】:

【参考方案5】:

我得到了相同的错误输出,但问题出在远程 drush 路径上,所以还要确保在别名定义中仔细检查我们的脚本路径:

'path-aliases' => array(
        '%drush-script' => 'your-server-path-here/.composer/vendor/drush/drush/drush'
      ),

【讨论】:

以上是关于Drush:远程服务器上的权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

远程桌面连接被拒绝,因为没有授权

远程 AWS EB 实例上的“php artisan migrate”上的 PHP 致命错误:laravel.log:权限被拒绝

Docker 上的 Jupyter 笔记本 - 权限被拒绝

邮件访问被拒绝因为没有授权此用户远程登录什么意思

Heroku“权限被拒绝(公钥)致命:无法从远程存储库中读取”问题

远程服务拒绝权限 onBind