Azure 应用服务 Kudu 将 MySql 添加到 PATH

Azure 应用服务 Kudu 将 MySql 添加到 PATH

我正在尝试为 Drupal8 设置 Drush9。我能够使用站点扩展安装 Composer 和 Drupal 安装程序来启动并运行我的站点,但现在有一个 Drupal 更新,我希望能够通过 Azure 应用服务 Kudu cmd 控制台 ([AppName].scm.azurewebsites.net) 执行更新。

我正在关注Drupal 更新指南并且能够使用 Composer 更新 Drupal 文件,但drush updb由于 mysql 未注册到 PATH,drush 数据库更新()失败。

错误截图

我尝试运行SETX PATH "D:\Program Files\MySQL\MySQL Server 5.1\bin\mysql.exe"mysql.exe 所在的位置,但出现访问被拒绝的情况。

有没有其他人成功将 exe 添加到 PATH,或者有其他方法吗?

谢谢

答案1

您可以向您的 Web 应用添加应用设置,如下所示:

在此处输入图片描述

然后,重新启动你的 Web 应用程序,你可以在 Kudu 控制台中检查它。

在此处输入图片描述

另外,您可以通过XDT 转换(XML 文档转换)

看到这个 问题

答案2

事实证明,由于我还安装了作曲家站点扩展,它有自己的扩展applicationHost.xdt,它会覆盖根级别的扩展或引起冲突。

我最终创建了一个D:\home\site\applicationHost.xdt包含以下内容的文件:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.webServer>
    <runtime xdt:Transform="InsertIfMissing">
      <environmentVariables xdt:Transform="InsertIfMissing">
        <add name="PATH" value="%PATH%;%HOME%\SiteExtensions\ComposerExtension\Commands;%APPDATA%\Composer\vendor\bin;d:\Program Files\MySQL\MySQL Server 5.1\bin" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />
        <add name="PATH" value="%PATH%;%HOME%\SiteExtensions\ComposerExtension\Commands;%APPDATA%\Composer\vendor\bin;d:\Program Files\MySQL\MySQL Server 5.1\bin" xdt:Locator="Match(name)" xdt:Transform="Replace" />
      </environmentVariables>
    </runtime>
  </system.webServer>
</configuration>

这样既保留了 Composer 添加的环境变量,又允许我使用新目录扩展 PATH。

希望这可以帮助将来遇到类似问题的其他人。

答案3

您可以这样做将 mysql 客户端添加到 PowerShell 中的路径:

$MysqlClientVersion=(Get-ChildItem -Name "D:\Program Files (x86)\mysql\" | Select-String -Pattern "^[\d.]+$" | % { $_.Line }) $Env:PATH += ";D:\Program Files (x86)\mysql\$MysqlClientVersion\bin"

相关内容