VSTS-在部署期间为Azure WebApp配置PHP设置
我正在为一个Azure项目工作,在这个项目中,只能使用Visual Studio CI中的ARM模板进行部署,并且我们只有对Azure门户的读取权限 此外,如果我能够使用Kudu,我也不会使用,因为我无法从门户访问 我试图做的是覆盖一些PHP设置,并为Azure Web应用程序启用一些额外的扩展。使用Kudu这很容易,但我不知道如何在web应用部署之前的发布期间上载两种排除的文件类型VSTS-在部署期间为Azure WebApp配置PHP设置,php,azure,continuous-integration,azure-devops,azure-web-app-service,Php,Azure,Continuous Integration,Azure Devops,Azure Web App Service,我正在为一个Azure项目工作,在这个项目中,只能使用Visual Studio CI中的ARM模板进行部署,并且我们只有对Azure门户的读取权限 此外,如果我能够使用Kudu,我也不会使用,因为我无法从门户访问 我试图做的是覆盖一些PHP设置,并为Azure Web应用程序启用一些额外的扩展。使用Kudu这很容易,但我不知道如何在web应用部署之前的发布期间上载两种排除的文件类型.dll和.ini 到目前为止,我尝试了以下步骤,这些步骤对我来说是有意义的,但显然不起作用,而且是一种错误的方法
.dll
和.ini
到目前为止,我尝试了以下步骤,这些步骤对我来说是有意义的,但显然不起作用,而且是一种错误的方法。如果有人能用正确的步骤引导我,我会很高兴的
我已经设置了PHP\u INI\u SCAN\u DIR=d:\home\site\INI
,如中所述
我上传的文件与以下任务,可以看到他们上传的日志。我还尝试使用带有定义变量的路径,例如$(Agent.ReleaseDirectory)
,而不是绝对路径,但它没有改变任何东西
PHP似乎正在查找d:\home\site\ini
文件夹,但找不到任何ini文件。另外,我设置的其他选项也没有更改
ini文件的内容
; extensions.ini
; Enable Extensions
extension=d:\home\site\ext\php_redis.dll
; Settings
memory_limit = 256M
upload_max_filesize = 10M
更新
还有应用程序服务部署任务
以及应用程序设置中的虚拟应用程序和目录
虚拟应用程序和目录的根路径是site\wwwroot,因此如果通过Azure应用程序服务部署任务部署web应用程序,则所有文件都将部署到wwwroot文件夹 在将应用程序部署到azure应用程序服务之前,您可以通过Kudu API将特定文件上载到相应的文件夹(例如site\ini) 请参阅此线程,了解如何在VSTS构建中使用Kudu API:
请参阅本文以了解如何将文件上载到应用程序服务:。虚拟应用程序和目录的根路径是site\wwwroot,因此,如果通过Azure应用程序服务部署任务部署web应用程序,则所有文件都将部署到wwwroot文件夹 在将应用程序部署到azure应用程序服务之前,您可以通过Kudu API将特定文件上载到相应的文件夹(例如site\ini) 请参阅此线程,了解如何在VSTS构建中使用Kudu API:
请参阅本文,了解如何将文件上载到应用程序服务:。以下是我启用PHP扩展和配置PHP设置的方法 我放弃了在一个ini文件中设置所有内容的尝试。对于PHP设置,我在项目源代码的根目录中创建了一个
.user.ini
文件,并在那里设置PHP选项
; .user.ini
memory_limit = 256M
default_socket_timeout = 600
post_max_size = 64M
upload_max_filesize = 64M
max_execution_time = 1200
max_input_time = 1200
但是,如果在构建阶段有一个文件类型筛选器,那么添加*.ini
或***.ini
不会将.user.ini
文件包含到下载的工件中。为此,我调整了构建阶段,如下所示
对于PHP扩展,我使用了PHP\u扩展
环境变量。我已使用复制文件任务将DLL文件复制到D:\home\site\ext
,并设置PHP\u EXTENSIONS=ext\PHP\u redis.DLL
。请参阅下面我的任务
也许将复制文件任务放在应用程序服务部署任务之前就足够了,并且不需要重新启动应用程序,但我还没有尝试过。为了重新启动应用程序,我正在使用Azure PowerShell,并在文件中写入以下脚本
Param(
[string]$ResourceGroup,
[string]$appName
)
Restart-AzureRmWebApp -ResourceGroupName $ResourceGroup -Name $appName | Out-Null
Write-Host "Started web app '$appName'"
希望它也能帮助其他人。以下是我启用PHP扩展和配置PHP设置的方法 我放弃了在一个ini文件中设置所有内容的尝试。对于PHP设置,我在项目源代码的根目录中创建了一个
.user.ini
文件,并在那里设置PHP选项
; .user.ini
memory_limit = 256M
default_socket_timeout = 600
post_max_size = 64M
upload_max_filesize = 64M
max_execution_time = 1200
max_input_time = 1200
但是,如果在构建阶段有一个文件类型筛选器,那么添加*.ini
或***.ini
不会将.user.ini
文件包含到下载的工件中。为此,我调整了构建阶段,如下所示
对于PHP扩展,我使用了PHP\u扩展
环境变量。我已使用复制文件任务将DLL文件复制到D:\home\site\ext
,并设置PHP\u EXTENSIONS=ext\PHP\u redis.DLL
。请参阅下面我的任务
也许将复制文件任务放在应用程序服务部署任务之前就足够了,并且不需要重新启动应用程序,但我还没有尝试过。为了重新启动应用程序,我正在使用Azure PowerShell,并在文件中写入以下脚本
Param(
[string]$ResourceGroup,
[string]$appName
)
Restart-AzureRmWebApp -ResourceGroupName $ResourceGroup -Name $appName | Out-Null
Write-Host "Started web app '$appName'"
希望它对其他人也有帮助。查看价值?-“PHP应该在哪个目录中查找可动态加载的扩展。另请参阅:enable_dl和dl()。”不要与PHP_ini_scan_dir混淆。抱歉,请参阅我的反向阅读。不得不问,你上传文件后重启了吗?复制文件任务是在应用部署之前。应该不需要重新启动。此外,我无法从门户重新启动应用程序。Azure应用程序服务部署任务的详细设置是什么?app service的虚拟应用程序和目录的详细设置是什么?(在azure portal中打开应用程序服务>应用程序设置>虚拟应用程序和目录)复制文件任务刚刚用于复制当前机器上的文件(代理机器)@starain MSFT我已更新问题和附加屏幕截图。Azure应用程序服务部署任务中除了屏幕截图中没有其他设置。请参阅值?-“PHP应该在哪个目录中查找可动态加载的扩展。另请参阅:enable_dl和dl()。”不要与PHP_ini_scan_dir混淆。抱歉,请参阅我的反向阅读。不得不问,你上传文件后重启了吗?复制文件任务是在应用部署之前。应该不需要重新启动。此外,我无法从门户重新启动应用程序。Azure应用程序服务部署任务的详细设置是什么?什么是d