【问题标题】:How to change root directory for PHP azure website?如何更改 PHP azure 网站的根目录?
【发布时间】:2021-10-10 04:17:47
【问题描述】:

我使用应用服务在 azure 上创建了一个 PHP 网站。我通过 bitbucket 使用持续部署。我需要在我的代码中将网站指向公共文件夹以运行应用程序,因为它是使用 zend 框架构建的。

经过一番搜索,无法找到如何将服务器指向的文件夹更改为默认目录。

【问题讨论】:

    标签: php azure zend-framework


    【解决方案1】:

    转到 Azure Web 应用程序设置 -> 应用程序设置 -> 虚拟应用程序和目录并设置新文件夹的物理路径。还要检查应用程序复选框。

    重启网络应用一次。

    【讨论】:

    • 我认为这个答案已经过时了。我的 WebApp 没有与此答案相同的设置。
    【解决方案2】:

    有几种可能的情况:

    1. 您运行的是 Windows 应用服务
    2. 您使用 PHP 7.4 或更低版本运行 Linux 应用服务
    3. 您使用 PHP 8 运行 Linux 应用服务

    在第一个场景(Windows 应用服务)中,您可以转到应用服务 > 设置 > 配置刀片,您需要选择选项卡“路径映射”,您可以在其中设置虚拟应用程序路径,如下所示:“/”映射到“站点\wwwroot\public”。

    在第二种情况下,您可以使用@Ed Greenberg 描述的 .htaccess 解决方案,即使对于 Zend Framework,我建议使用以下设置:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ /index.php [NC,L]
    

    对于第三种情况,您将面临更多挑战,因为 Apache 被 Nginx 取代并且重写规则不再适用。请参阅我的详细博客文章“PHP 8 on Azure App Service”,了解如何使用适用于 PHP 8 的新 Azure 应用服务解决这一挑战和其他挑战。

    祝你好运,如果它解决了你的问题,请告诉我。

    【讨论】:

      【解决方案3】:

      2021 年的正确答案(对于 Laravel,可能还有其他带有 /public 目录的框架)是在 webroot 目录中放置一个额外的 .htaccess。

      <IfModule mod_rewrite.c>
         RewriteEngine On
         RewriteRule ^(.*)$ public/$1 [L]
      </IfModule>
      

      感谢Azure Web App - Linux/Laravel : Point domain to folder

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-05
        • 2015-07-11
        • 1970-01-01
        • 2016-05-23
        • 2020-08-16
        • 1970-01-01
        • 2019-10-13
        相关资源
        最近更新 更多