如何更改根目录为PHP Azure网站?

yruzcnhs  于 2023-01-19  发布在  PHP
关注(0)|答案(5)|浏览(146)

我已经使用app services在azure上创建了一个PHP网站。我通过bitbucket使用持续部署。我需要在代码中将网站指向公共文件夹来运行应用程序,因为它是用zend framework构建的。
经过一些搜索,无法找到如何更改服务器指向默认目录的文件夹。

n1bvdmb6

n1bvdmb61#

转到Azure Web应用设置-〉应用程序设置-〉虚拟应用程序和目录,然后设置新文件夹的物理路径。另外,选中“应用程序”复选框。
重新启动Web应用一次。

thtygnil

thtygnil2#

有几种可能的情况:
1.您运行Windows应用程序服务
1.使用PHP 7.4或更低版本运行Linux应用程序服务
1.使用PHP 8运行Linux应用程序服务
在第一个场景(Windows App Service)中,您可以转到App Service〉Settings〉Configuration blade,需要选择“Path Mappings”选项卡,在该选项卡中可以按如下方式设置虚拟应用程序路径:“/”Map到“站点\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“,了解如何使用新的Azure App Service for PHP 8解决此问题和其他挑战。
祝你好运,如果它解决了你的问题,请告诉我。

qlvxas9a

qlvxas9a3#

对于带有nginx的PHP 8.0,我使用startup.sh位于项目根目录下的www.example.com脚本。startup.sh包含以下行:

sed -i 's/\/home\/site\/wwwroot/\/home\/site\/wwwroot\/public/g' /etc/nginx/sites-available/default && service nginx reload

您需要在“startup.sh常规设置”中添加“www.example.com“作为启动命令。现在“public”目录是您的根目录。

g6ll5ycj

g6ll5ycj4#

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

jckbn6z7

jckbn6z75#

最后我找到了Laravel文档如何使它与Azure一起工作。更准确地说-PHP 8 + NGINX。这里是文章链接-https://azureossd.github.io/2022/04/22/PHP-Laravel-deploy-on-App-Service-Linux-copy/index.html
希望它会有用:-)

PHP 8(网络加密语言)

Azure应用服务Linux上的PHP 8使用NGINX作为Web服务器。若要让NGINX将请求路由到/public,我们必须配置自定义启动脚本。我们可以获取/etc/nginx/sites-available/default.conf下的现有default. conf,然后运行cp /etc/nginx/sites-available/default.conf /home。这会将所需的default.conf复制到/这样我们就可以用FTP客户端或任何其他允许这样做的工具下载它。
此默认.conf包含以下行:

root /home/site/wwwroot;

我们需要将其更改为以下内容:

root /home/site/wwwroot/public;

接下来,在location块下,我们需要将其从:

location / {            
        index  index.php index.html index.htm hostingstart.html;
    }

改为:

location / {            
        index  index.php index.html index.htm hostingstart.html;
        try_files $uri $uri/ /index.php?$args;
    }

现在配置实际的startup.shbash脚本。注意,只要是Bash(.sh)脚本,文件名可以是任意的。请沿着以下命令行配置文件:

#!/bin/bash

echo "Copying custom default.conf over to /etc/nginx/sites-available/default.conf"

NGINX_CONF=/home/default.conf

if [ -f "$NGINX_CONF" ]; then
    cp /home/default.conf /etc/nginx/sites-available/default
    service nginx reload
else
    echo "File does not exist, skipping cp."
fi

注意:$query_string也可以使用。请参阅这里的官方文档。
我们的自定义default.conf应该如下所示:

server {
    #proxy_cache cache;
    #proxy_cache_valid 200 1s;
    listen 8080;
    listen [::]:8080;
    root /home/site/wwwroot/public;
    index  index.php index.html index.htm;
    server_name  example.com www.example.com; 

    location / {            
        index  index.php index.html index.htm hostingstart.html;
        try_files $uri $uri/ /index.php?$args;
    }

    ........
    .....
    ...all the other default directives that were in this file originally...
}

使用FTP客户端将startup.sh脚本和自定义default.sh上载到PHP应用程序服务的/home目录。
接下来,在门户目标/home/startup.sh(或任何启动脚本文件名)中的“配置”下。
Laravel应用程序
最后,重新启动应用服务。现在应该使用我们的自定义启动脚本。使用LogStream或Diagnose and Solve -〉Application Logs detector,或其他方法,查看脚本中的stdout。

相关问题