在.NET Core 上运行的 WordPress

在.NET Core 上运行的 WordPress,无需安装PHP既可跨平台运行WordPress。

在Peachpie中实现PHP所需的功能数月后,现在终于可以运行一个真实的应用程序:WordPress。

本文是基于Peachpie https://github.com/iolevel/peachpie  

Peachpie是一个基于Microsoft的Roslyn的现代PHP编译器。

在.NET上运行WordPress

流行的Phalanger项目已经证明,可以在Microsoft .NET上运行几乎未经修改的WordPress应用。

但是这个解决方案存在着问题,与新的WordPress版本不兼容。现在,Peachpie 也能够将WordPress作为一个完全托管的应用程序运行在.NET和.NET Core上。

这只是一个证明Peachpie仍然是一个正在进行中的项目。不建议在生产环境中使用它

本篇文章主要目的是证明Peachpie真的与WordPress中使用的标准PHP兼容,并展示其优点。

先决条件:

.NET Core 1.0

MySQL Server

 

对WordPress修改

由于Peachpie 0.5.0版本,编译器不支持扩展有条件声明的类,如

if (condition) { class X {} }class Y extends X {} // extending conditionally declared class

wp-includes/class-json.php:

  • 注释条件 if (!class_exists(...))

  • 注释第一个Services_JSON_Error类,保留第二个

这里准备了一个修改好的WordPress版本,已经包括上面修改,使你编译项目更容易。

.NET Core WordPress

预先修改 wp-config.php 配置了包含MySQL数据库的凭据的文件。使用默认端口3306,密码为'' ,服务器是'localhost'。这里大家根据实际情况进行修改。

 

编译WordPress

编译由dotnet及其website/project.json 项目文件驱动

{  "version": "1.0.0", "buildOptions": {    "compilerName": "php",    "compile": "**\\*.php",   
"debugType": "portable", "xmlDoc": true}, "dependencies": { "Peachpie.App": "0.5.0-*"}, "tools": { "Peachpie.Compiler.Tools": "0.5.0-*"}, "frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0"}}}} }

使用 Peachpie.Compiler.Tools 进行编译WordPress项目。

然后有一个app 项目也就是ASP.NET Core。

static void Main() {    
var root = Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory()) + "/website"; var host = new WebHostBuilder().UseKestrel().UseWebRoot(root).UseContentRoot(root) // content root with wp static files.UseUrls("http://*:5004/").UseStartup<Startup>() // initialization routine, see below.Build();host.Run(); } class Startup {

public void Configure(IApplicationBuilder app) {Pchp.Core.Context.DefaultErrorHandler = new Pchp.Core.CustomErrorHandler();
// disables debug assertsapp.UsePhp();
// installs handler for *.php files and forwards them to our website.dllapp.UseDefaultFiles();app.UseStaticFiles();} }

接着还原项目,在根目录下dotnet restore.

还原好以后cd app dotnet run

然后访问http://localhost:5004/ ,只要MySQL 配置正确,就会跳转至安装界面。注意要先在数据库中创建wordpress 数据库。

为了证明该网站真的在.NET Core上运行,我们可以反编译website.dll 看看。

 

参考文档:

https://github.com/linezero/peachpie-wordpress

https://github.com/iolevel/peachpie-wordpress

http://www.peachpie.io/2017/02/wordpress-announcement.html


原文地址:http://www.cnblogs.com/linezero/p/6510115.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326584.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java for遍历hashmap_Java 使用for和while循环遍历HashMap的方法及示例代码

1&#xff64;使用entrySet()遍历1) 使用while实现public static void printMap(Map mp) {Iterator it mp.entrySet().iterator();while (it.hasNext()) {Map.Entry pair (Map.Entry)it.next();System.out.println(pair.getKey() " " pair.getValue());it.remov…

art-template入门(六)之解析规则

转载自 art-template解析规则 解析规则 template.defaults.rules art-template 可以自定义模板解析规则&#xff0c;默认配置了原始语法与标准语法。 修改界定符 // 原始语法的界定符规则 template.defaults.rules[0].test /<%(#?)((?:|#|[-])?)[ \t]*([\w\W]*?)[…

求集合中的公共元素

package com.atguigu.TEST;import javax.swing.plaf.basic.BasicScrollPaneUI; import java.util.HashSet;/*** 创建人 wdl* 创建时间 2021/4/4* 描述*/ public class Test {public static void main(String[] args) {HashSet<String> hashSet1 new HashSet<>();H…

mybatis使用全注解的方式案例(包含一对多关系映射)

前面我写过ssh&#xff1a;ssh(SpringSpring mvchibernate)简单增删改查案例 和ssm&#xff1a;ssm(SpringSpring mvcmybatis)的案例&#xff0c;需要了解的可以去看看&#xff0c;今天我写了一下ssm(springspringmvcmybatis)全注解的方式又重新写了一遍两表增删改查的案例&…

Visual Studio 2017全面上市

自从1997年第一版发布的20年以来&#xff0c;微软Visual Studio开发工具一向以易学易用、功能齐全而闻名&#xff0c;帮助开发者以简驭繁&#xff0c;即使面对越来越快速的交付压力&#xff0c;也能大幅提高生产力&#xff0c;好整以暇。对于Visual Studio的使用者而言&#xf…

art-template入门(七)之压缩页面

转载自 art-template压缩页面 压缩页面 template.defaults.minimize art-template 内建的压缩器可以压缩 HTML、JS、CSS&#xff0c;它在编译阶段运行&#xff0c;因此完全不影响渲染速度&#xff0c;并且能够加快网络传输。 开启 template.defaults.minimize true;配置 …

java getimage_Java ImageView.getImage方法代码示例

import javafx.scene.image.ImageView; //导入方法依赖的package包/类FXThreadprivate static void updateListener(NotNull final Node node, NotNull final ImageView imageView,NotNull final ReadOnlyBooleanProperty condition,NotNull final Object listenerKey, NotNull…

Visual Studio 2017发布会:黄金时代的家族聚会

美国时间三月七日&#xff08;北京2017年3月8日&#xff09;&#xff0c;微软正式发布了Visual Studio 2017&#xff0c;自己旗舰开发工具的最新版本。同日发布的主要产品还有 .NET Core Tooling 1.0.NET Core 微服务实例Visual Studio for Mac Preview 4Visual Studio Mobile …

java开发可以转什么软件有哪些_转行开发软件Java编程必须会什么

原标题&#xff1a;转行开发软件Java编程必须会什么要想开发软&#xff0c;Java编程必须会什么&#xff1f;最起码的就是逻辑思维要好&#xff0c;只要不是特别差就没有什么问题。数学是相对比较能够体现出一个人的逻辑思维如何。先想想自己以前上学的时候&#xff0c;数学成绩…

art-template入门(八)之选项

转载自 art-template选项 template.defaults // 模板名 filename: null,// 模板语法规则列表 rules: [nativeRule, artRule],// 是否开启对模板输出语句自动编码功能。为 false 则关闭编码输出功能 // escape 可以防范 XSS 攻击 escape: true,// 启动模板引擎调试模式。如果为…

2017蓝桥杯省赛---java---B---2(纸牌三角形)

题目描述 纸牌三角形 思路分析 全排列特殊去重 ans/6 代码实现 package com.atguigu.TEST;class Main{public static int[] a{1,2,3,4,5,6,7,8,9};public static int ans;public static void f(int k){if(k9){int x1 a[0] a[1] a[2] a[3];int x2 a[3] a[4] a[5] …

微软开源基于云的生理学研究工具

Bio Model Analyzer是一款微软基于云的生理学研究工具&#xff0c;可以用于对化细胞交互和通信进行建模&#xff0c;现已经在GitHub上开源&#xff0c;在MIT许可之下。 研究人员使用Bio Model Analyzer (BMA) 去创建计算机模型&#xff0c;该模型可以比较健康和不健康细胞内的处…

mysql group和order_mysql 用 group by 和 order by同时使用

首先,这是不可能实现的mysql的查询的顺序select -> from-> where->group by->having->order by.但mysql的解析器执行顺序:from-> where->group by->having->select->order by.所以,从执行的流程来看,是先group by 然后在 order by.order by拿到的…

art-template入门(九)之API

API template(filename, content) 根据模板名渲染模板。 参数&#xff1a; {string} filename{Object,string} content返回值&#xff1a; 如果 content 为 Object&#xff0c;则渲染模板并返回 string如果 content 为 string&#xff0c;则编译模板并返回 functionvar html…

2017蓝桥杯省赛---java---B---3(承压计算)

题目描述 7 5 8 7 8 8 9 2 7 2 8 1 4 9 1 8 1 8 8 4 1 7 9 6 1 4 5 4 5 6 5 5 6 9 5 6 5 5 4 7 9 3 5 5 1 7 5 7 9 7 4 7 3 3 1 4 6 4 5 5 8 8 3 2 4 3 1 1 3 3 1 6 6 5 5 4 4 2 9 9 9 2 1 9 1 9 2 9 5 7 9 4 3 3 7 7 9 3 6 1 3 8 8 3 7 3 6 8 1 5 3 9 5 8 3 8 1 8 3 3 8 3 2 3…

[C#7] 1.Tuples(元组)

1. 老版本代码 class Program { static void Main(string[] args) { var fullName GetFullName(); Console.WriteLine(fullName.Item1);// Item1,2,3不能忍&#xff0c;&#xff0c;, Console.WriteLine(fullName.Item2); Console.WriteLine(fullName.Item3); } static Tuple&…

mysql 行转列分级输出_MySQL如何实现行转列分级输出?_MySQL

概述好久没写SQL语句&#xff0c;今天看到问答中的一个问题&#xff0c;拿来研究一下。问题链接&#xff1a;关于Mysql 的分级输出问题情景简介学校里面记录成绩&#xff0c;每个人的选课不一样,而且以后会添加课程&#xff0c;所以不需要把所有课程当作列。数据表里面数据如下…

2017蓝桥杯省赛---java---B---7(日期问题)

题目描述 日期问题 标题&#xff1a;日期问题小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是&#xff0c;这些日期采用的格式非常不统一&#xff0c;有采用年/月/日的&#xff0c;有采用月/日/…

ssm使用全注解实现增删改查案例——DeptMapperImpl

package org.dao.impl;import java.util.List;import org.dao.IDeptMapper; import org.entity.Dept; import org.springframework.beans.factory.annotation.Autowired;public class DeptMapperImpl implements IDeptMapper {//自动注入Autowiredprivate IDeptMapper deptMapp…

Gson的入门使用

转载自 Gson的入门使用 Java对象和Json之间的互转&#xff0c;一般用的比较多的两个类库是Jackson和Gson&#xff0c;下面记录一下Gson的学习使用。 基础概念&#xff1a; Serialization:序列化&#xff0c;使Java对象到Json字符串的过程。 Deserialization&#xff1a;反序…