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 drush
和 ls -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:权限被拒绝