【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
问题描述
在App Service for Windows的环境中,当前只提供了PHP 7.4 版本的选择情况下,如何实现自定义PHP Runtime的版本呢? 如 PHP Version 8.1.9?

当App Service创建号值后,并且在门户上设置PHP Version版本位 PHP 7.4, 然后进入Kudu站点中,进入 C:\home\sites\wwwroot目录中,创建一个index.php 文件,文件内容为:
<?php echo "Hello World! This is phpinfo result! "; phpinfo();
文件保存后,访问App Service的默认URL: https://<yourappservicename>.chinacloudsites.cn , 得出当前PHP Version 为 7.4.28, 如果这里需要使用8.1.*的版本,而App Service有没有提供这个版本? 应该如何自定义PHP呢?

操作实现
是的,App Service for Windows支持自定义PHP Runtime Version。 可以通过以下四个步骤完成自定义操作。
第一步:下载合适的PHP for Windows版本,如本次实验中使用的8.1.9
下载地址:https://windows.php.net/download/

第二步:解压并修改php.ini文件
在解压后的文件夹中,找到 php.ini-development文件,打开并在On Windows下反注释掉 [extension_dir = "ext" ] 部分。然后修改文件名为 php.ini

PS: 如果项目中,有需要其他PHP扩展,可以直接在 php.ini 文件中启用这些扩展。
第三步:打开Kudu站点,在wwwroot目录下创建一个php目录,并把第二步中问价夹中的全部文件上传到wwwroot中的php目录中
1)进入App Service的kudu 站点(https://<yourappservicename>.scm.chinacloudsites.cn),选择Debug Console --> C:\home\site\wwwroot> 目录
2)在目录中创建一个php文件夹
3)把第二步中的所有文件打包为zip文件,然后通过拖拽方式,放入kudu站点上php文件夹的右上部分,kudu会自动解压zip文件到当前目录
PS: 这一步也可以通过其他部署方式实现,如FTP, Git等,只要能把本地php runtime文件全部上传到wwwroot中即可
操作步骤动画如下:

第四步:修改App Service的 Handler mappings, 添加 *.php 扩展,并且指向第三步中目录中的 php-cgi.exe
在Path mappings选项卡中,添加 *.php 新扩展, Script Processor为: C:\home\site\wwwroot\php\php-cgi.exe

第五步:保存修改后,重新访问App Service默认URL,查看PHP Version的改变为8.1.9

自定义操作成功!
参考资料
PHP For Windows: https://windows.php.net/download/
[END]
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法的更多相关文章
- 【Azure 应用服务】App Service For Windows 环境中部署Python站点后,如何继续访问静态资源文件呢(Serving Static Files)?
问题描述 当创建一个App Service 后,运行时环境和版本选择Windows 和 Python 3.6. 登录Kudu 站点查看,默认的文件有 web.config, hostingstart- ...
- 【Azure 应用服务】App Service for Linux 中实现 WebSocket 功能 (Python SocketIO)
问题描述 使用 python websockets 模块作为Socket的服务端,发布到App Service for Linux环境后,发现Docker Container无法启动.错误消息为: 2 ...
- 【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found -- The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
问题描述 使用NodeJS的后端应用,开发一个Mobile App的服务端,手机端通过REST API来访问获取后端数据.在本地编译好后,通过npm start启动项目,访问效果如下: 但是,当把项目 ...
- 【Azure 应用服务】App Service中,为Java应用配置自定义错误页面,禁用DELETE, PUT方法
问题定义 使用Azure应用服务(App Service),部署Java应用,使用Tomcat容器,如何自定义错误页面呢?同时禁用DELETE, PUT方法 解决办法 如何自定义错误页面呢?需要在 J ...
- 【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
问题描述 在App Service For Windows的环境中,我们可以通过ArmClient 工具发送POST请求在Web应用的实例中抓取网络日志,但是在App Service For Linu ...
- 【Azure 应用服务】App Service 在使用GIt本地部署,上传代码的路径为/home/site/repository,而不是站点的根目录/home/site/wwwroot。 这个是因为什么?
问题描述 App Service 在使用GIt本地部署,上传代码的路径为/home/site/repository,而不是站点的根目录/home/site/wwwroot. 这个是因为什么? 并且通过 ...
- 【Azure 应用服务】App Service/Azure Function的出站连接过多而引起了SNAT端口耗尽,导致一些新的请求出现超时错误(Timeout)
问题描述 当需要在应用中有大量的出站连接时候,就会涉及到SNAT(源地址网络转换)耗尽的问题.而通过Azure App Service/Function的默认监控指标图表中,却没有可以直接查看到SNA ...
- 【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
编写Java Spring Boot应用,通过配置logging.path路径把日志输出在指定的文件夹中. 第一步:通过VS Code创建一个空的Spring Boot项目 第二步:在applicat ...
- 【Azure 应用服务】App Service频繁出现 Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener 异常分析
问题描述 在使用App Service的过程中,发现应用频繁出现503错误,通过Kudu站点获取到Logfiles. 在 Eventlog.xml 文件中,发现大量的 Microsoft.Window ...
随机推荐
- neo4j删除节点和关系
两种方法: 一.用下列 Cypher 语句: match (n) detach delete n 原理:匹配所有的节点,然后进行删除. 二. 从文件系统上删除对应的数据库. 1.停掉服务: 2.删除 ...
- HMS Core 视频编辑服务开放模板能力,助力用户一键Get同款酷炫视频
前言 短视频模板,是快捷创作短视频的一种方式,一般由专业设计师或模板创作人制作,用户只需替换视频模板中的部分素材,便可生成一支与模板一样的创意视频.这种省时省力.无需"烧脑"构思创 ...
- c++可视化性能测试
阅读前注意 本文所有代码贴出来的目的是帮助大家理解,并非是要引导大家跟写,许多环境问题文件问题没有详细说明,代码也并不全面,达不到跟做的效果.建议直接阅读全文即可,我在最后会给出详细代码地址,对源代码 ...
- React基础中的单一标签包裹的问题
先上一段代码: <div id="example"> </div function HelloMessage(props1) { return (<h1&g ...
- SAP 定义客户端
SCC4 定义客户端 点击新建条目按钮 Client(客户端) R 200 Client Name(客户端名称) O City(城市) R Logical system(逻辑系统) R ...
- 原生实现.NET5.0+ 自定义日志
一.定义一个静态类 声明一个 ReaderWriterLockSlim 对象 用于并发控制 1 /// <summary> 2 /// IO锁 3 /// </summary> ...
- Spring框架系列(9) - Spring AOP实现原理详解之AOP切面的实现
前文,我们分析了Spring IOC的初始化过程和Bean的生命周期等,而Spring AOP也是基于IOC的Bean加载来实现的.本文主要介绍Spring AOP原理解析的切面实现过程(将切面类的所 ...
- POI设置列宽 自动调整列宽
for (int i = 0; i <= totalColumn; i++) { sheet.autoSizeColumn((short)i,true); //调整列宽 } 其中totalCol ...
- 开启apache2的ssl访问功能
Ubuntu 20.04 1. Apache2默认安装的时候,ssl模块是不启用的.开启命令: $ sudo apt install apache2 #安装$ sudo a2enmod ssl #开启 ...
- 静态同步方法和解决线程安全问题_Lock锁
静态的同步方法锁对象是谁?不能是thisthis是创建对象之后产生的,静态方法优先于对象静态方法的锁对象是本类的cLass属性-->class文件对象(反射) 卖票案例出现了线程安全问题 卖出了 ...