You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否使用Ddev Drush站点别名操作远程服务器?配置异常咨询

Ddev中Drush站点别名执行异常的排查与解决

问题现象

使用ddev drush @dev-server status能正常显示远程服务器详情,但执行ddev drush @dev-server sqlc、删除远程节点等命令时,实际操作的却是本地Ddev站点——比如删除远程存在但本地没有的节点时,Drush会提示节点不存在。

可能的阻碍设置及解决方法

1. Ddev对Drush环境变量的自动注入

Ddev会自动设置DRUPAL_ROOT、数据库连接等环境变量,可能导致部分Drush命令优先调用本地站点资源。

  • 检查项目内或全局Drush别名配置(drush/sites/或~/.drush/sites/下的.site.yml文件),确保远程别名的root、uri、ssh参数准确指向远程服务器,示例配置:
    dev-server:
      root: /var/www/html
      uri: https://dev.example.com
      ssh: deploy@dev-server.example.com
      ssh-options: '-i /home/.ssh/id_rsa_dev'
    
  • 确保别名配置中未混入本地Ddev站点的路径参数。

2. SSH密钥的容器内访问权限

status命令仅需基础SSH连通性,但其他命令需要完整的认证上下文,需保证Ddev容器能正确访问SSH密钥:

  • 宿主机器的SSH密钥需放在~/.ssh目录下,Ddev默认会将宿主的~/.ssh挂载到容器内的/home/.ssh,因此别名配置中的密钥路径要使用容器内路径(如/home/.ssh/id_rsa_dev)。
  • 确保宿主和容器内的密钥文件权限为600,避免权限过高导致SSH拒绝使用:
    # 宿主机器设置权限
    chmod 600 ~/.ssh/id_rsa_dev
    # 进入容器后检查并修正权限
    ddev ssh
    chmod 600 /home/.ssh/id_rsa_dev
    
  • 测试容器内SSH连通性:ddev ssh后执行ssh -i /home/.ssh/id_rsa_dev deploy@dev-server.example.com,确认能无密码登录远程服务器。

3. Ddev命令的执行上下文干扰

直接使用ddev drush可能被Ddev注入本地站点参数,改用ddev exec执行Drush命令,可规避这类干扰:

ddev exec drush @dev-server sqlc
ddev exec drush @dev-server node:delete 123

4. Ddev全局Drush配置的影响

检查~/.ddev/config.yaml中的Drush相关配置(如drush_version、自定义命令参数),暂时注释掉可疑配置后重新测试命令执行情况。

内容的提问来源于stack exchange,提问作者therobyouknow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 02:31:17