阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

在.NET Core 上运行的 WordPress

107次阅读
没有评论

共计 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
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 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

在.NET Core 上运行的 WordPress

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

在.NET Core 上运行的 WordPress

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

在.NET Core 上运行的 WordPress

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/141566.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2056字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中