Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在启用Composer的Azure WebApp上配置Imagick_Php_Azure_Composer Php_Imagick - Fatal编程技术网

Php 在启用Composer的Azure WebApp上配置Imagick

Php 在启用Composer的Azure WebApp上配置Imagick,php,azure,composer-php,imagick,Php,Azure,Composer Php,Imagick,我已经按照@Saurabh Kumar手册(替换为php7的相关软件包)让Imagick在Azure WebApp上工作,但是一旦我在同一应用程序上启用Composer扩展,Azure就失去了Imagick的路径 建议编辑Composer applicationHost.xdt,而不是为Imagick创建新的applicationHost.xdt文件(如果已安装Composer)。 我试过了,但它摧毁了整个应用程序(HTTP错误503) 有没有办法让Imagick和Composer都在Azure

我已经按照@Saurabh Kumar手册(替换为php7的相关软件包)让Imagick在Azure WebApp上工作,但是一旦我在同一应用程序上启用Composer扩展,Azure就失去了Imagick的路径

建议编辑Composer applicationHost.xdt,而不是为Imagick创建新的applicationHost.xdt文件(如果已安装Composer)。 我试过了,但它摧毁了整个应用程序(HTTP错误503)


有没有办法让Imagick和Composer都在Azure WebApp上工作

我转载了你的问题。经过一些调查,我找到了一种让Imagick和Composer在Azure WebApp上工作的方法。我知道它不漂亮,但它确实有用

1) 使用FTP或SCM(websitename.SCM.azurewebsites.net)进入
D:\home\SiteExtensions\composeExtension
fodler,并删除
applicationHost.xdt
文件

2) 将上面已删除文件的内容合并到
D:\home\site\applicationHost.xdt
。在此之后,
xdt
文件应如下所示:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
   <system.applicationHost>
     <sites>
       <site name="%XDT_SCMSITENAME%" xdt:Locator="Match(name)">
         <application path="/Composer"  applicationPool="%XDT_APPPOOLNAME%" xdt:Transform="Insert">
          <virtualDirectory path="/" physicalPath="%XDT_EXTENSIONPATH%" />
        </application>
      </site>
    </sites>
  </system.applicationHost>
  <system.webServer> 
    <runtime xdt:Transform="InsertIfMissing"> 
      <environmentVariables xdt:Transform="InsertIfMissing"> 
        <add name="MAGICK_HOME" value="d:\home\site\ext\" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" /> 
        <add name="MAGICK_CODER_MODULE_PATH" value="d:\home\site\imagickwin\" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" /> 
        <add name="APPSETTING_COMMAND" value="%HOME%\SiteExtensions\ComposerExtension\Hooks\deploy.cmd" />
        <add name="COMPOSER_ARGS" value="--prefer-dist --no-dev --optimize-autoloader --no-progress" />
        <add name="PATH" value="%PATH%;%PATH%d:\home\site\ext\;%HOME%\SiteExtensions\ComposerExtension\Commands;%APPDATA%\Composer\vendor\bin" />
      </environmentVariables> 
    </runtime> 
    <rewrite xdt:Transform="InsertIfMissing">
      <rules xdt:Transform="InsertIfMissing">
        <rule name="RequestBlockingRule1" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" stopProcessing="true">
            <match url=".*" />
            <conditions>
                <add input="{URL}" pattern="vendor/(.*)$" />
            </conditions>
            <action type="CustomResponse" statusCode="403" statusReason="Forbidden: Access is denied." statusDescription="You do not have permission to view this directory or page using the credentials that you supplied." />
        </rule>
      </rules>
    </rewrite>
  </system.webServer> 
</configuration>


谢谢,这次成功了!我不知道为什么它以前不工作,我想我可能添加了一些错误的参数,导致PHP的一般错误。不过,我希望微软能提供更优雅的解决方案,希望以后不会给Imagick带来问题。