共计 2056 个字符,预计需要花费 6 分钟才能阅读完成。
在.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
- 注释条件 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 asserts
app.UsePhp(); // installs handler for *.php files and forwards them to our website.dll
app.UseDefaultFiles();
app.UseStaticFiles();}
}
接着还原项目,在根目录下 dotnet restore.
还原好以后 cd app dotnet run
然后访问 http://localhost:5004/ , 只要 MySQL 配置正确,就会跳转至安装界面。注意要先在数据库中创建 wordpress 数据库。
为了证明该网站真的在.NET Core 上运行,我们可以反编译 website.dll 看看。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/141566.htm