在.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.1 or newer

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

使用 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(new PhpRequestOptions() { ScriptAssembliesName = new[] { "website" } }); // 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 看看。

 

參考文檔:

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

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

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

 

如果你覺得本文對你有幫助,請點擊“推薦”,謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM