昨天在 The week in .NET 中发现 Scott Hanselman 的这篇博文 Peachpie - Open Source PHP Compiler to .NET and WordPress under ASP.NET Core,知道了 Peachpie PHP 编译器加入了 .NET 基金会,借助 Peachpie ,.NET Core 已经支持 PHP 。

今天在 Linux 上实际体验一下 PHP under .NET Core 。

首先用 dotnet 命令安装一下 Peachpie 模板

# dotnet new -i Peachpie.Templates::*
Restoring packages for /root/.templateengine/dotnetcli/v2.0.0-preview2-006497/scratch/restore.csproj...
Installing Peachpie.Templates 0.7.0.
Generating MSBuild file /root/.templateengine/dotnetcli/v2.0.0-preview2-006497/scratch/obj/restore.csproj.nuget.g.props.
Generating MSBuild file /root/.templateengine/dotnetcli/v2.0.0-preview2-006497/scratch/obj/restore.csproj.nuget.g.targets.
Restore completed in 4.42 sec for /root/.templateengine/dotnetcli/v2.0.0-preview2-006497/scratch/restore.csproj.

然后用 Peachpie 模板创建一个 php 控制台项目

# dotnet new peachpie-console -n hello-world
The template "Peachpie console application" was created successfully.

接着看一下控制台项目包含的文件

# ls
hello-world.msbuildproj program.php README.md

发现新面孔 program.php ,看看其中的 php 代码

<?php
function main()
{
echo "Hello .NET World!";
}
main();

原味正宗的 php 代码。

为了更好地在终端中显示,给显示字符串加个换行

<?php
function main()
{
echo "Hello .NET World!\n";
}
main();

好了,.net core 下的 php 控制台程序准备就绪,用 dotnet run 命令运行一下试试

# dotnet run
Hello .NET World!

运行成功!

再接着创建一个 php web 项目试试

# dotnet new peachpie-web -n HelloPhp
The template "Peachpie web application" was created successfully.

看看生成的解决方案的文件

# tree
.
├── HelloPhp
│   ├── HelloPhp.msbuildproj
│   └── index.php
├── HelloPhp.Server
│   ├── HelloPhp.Server.csproj
│   └── Program.cs
├── HelloPhp.sln
└── README.md

进入 HelloPhp/HelloPhp.Server 目录运行 dotnet run 命令 运行 php web 项目

# dotnet run
Hosting environment: Production
Content root path: /home/root/HelloPhp/HelloPhp.Server/bin/Debug/netcoreapp1.1
Now listening on: http://*:5004
Application started. Press Ctrl+C to shut down.

成功运行!用 curl 命令访问测试一下

# curl http://localhost:5004
Hello World!

成功显示"Hello World!"。

欢迎 PHP 来到 .NET 的世界!

体验 PHP under .NET Core的更多相关文章

  1. dotnet core开发体验之开始MVC

    开始 在上一篇文章:dotnet core多平台开发体验 ,体验了一把dotnet core 之后,现在想对之前做的例子进行改造,想看看加上mvc框架是一种什么样的体验,于是我就要开始诞生今天的这篇文 ...

  2. dotnet core多平台开发体验

    前言 随着net core rc2的发布,园子里面关于net core的入门文章也也多了起来,但是大多数都是在一个平台上面来写几个简单的例子,或者是在解释代码本身,并没有体现说在一个平台上面创建一个项 ...

  3. .NET Core多平台开发体验[1]: Windows

    微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...

  4. .NET Core多平台开发体验[2]: Mac OS X

    除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux(RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE等)都提供了很好的支持,我们先来体验 ...

  5. .NET Core多平台开发体验[4]: Docker

    对于一个 .NET开发人员,你可能没有使用过Docker,但是你不可能没有听说过Docker.Docker是Github上最受欢迎的开源项目之一,它号称要成为所有云应用的基石,并把互联网升级到下一代. ...

  6. .NET Core多平台开发体验[3]: Linux (Windows Linux子系统)

    如果想体验Linux环境下开发和运行.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像R ...

  7. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]

    微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...

  8. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Docker

    对于一个 .NET Core开发人员,你可能没有使用过Docker,但是你不可能没有听说过Docker.Docker是Github上最受欢迎的开源项目之一,它号称要成为所有云应用的基石,并把互联网升级 ...

  9. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Linux

    如果想体验Linux环境下开发.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像RHEL ...

随机推荐

  1. Ubuntu18.04的网络管理netplan和防火墙ufw

    Netplan Ubuntu18.04使用的网络管理是netplan, 配置文件在/etc/netplan/下 刚安装完成的配置是这样的 刚安装完成的配置是这样的 network: ethernets ...

  2. 海量数据拆分到nosql系统的一种方案

    获取某用户的好友最新动态. 我们大体上来说先按照用户ID将用户的好友一致性哈希到几个mongodb集群,然后把用户的最新信息也存储到mongodb中.然后利用消息系统保持数据库中的数据和mongdb中 ...

  3. 11G新特性 -- 收缩临时表空间

    当大任务执行完毕,并不会立即释放临时表空间.有时候通过删除然后重建临时表空间的速度可能更快.不过对于在线系统可能不会那么容易删除重建,所以11g中可以在线收缩临时表空间或单个临时数据文件. 收缩临时表 ...

  4. 用.NET CORE做项目,VS里编译碰到‘。。。。包降级。。。。’错误

    用.NET CORE做项目,VS里编译碰到‘....包降级....’错误 本地开发机:WIN10+VS2017 15.7.3 ,用CORE2.1版本的建立一个项目,做好了,传到gitee上 今天有新同 ...

  5. 译:2. RabbitMQ Java Client 之 Work Queues (工作队列)

    在上篇揭开RabbitMQ的神秘面纱一文中,我们编写了程序来发送和接收来自命名队列的消息. 本篇我们将创建一个工作队列,工作队列背后的假设是每个任务都交付给一个工作者 本篇是译文,英文原文请移步:ht ...

  6. [svc]linux上vxlan实战

    linux vxlan实现2台机器的通往段ip互通 - 在n1上 ip l a vxlan0 type vxlan id 42 dstport 4789 remote 192.168.1.12 loc ...

  7. [Android]Android数据的四种存储方式

    存储方式 Android提供以下四种存储方式: SharePreference SQLite File ContentProvider Android系统中数据基本都是私有的,一般存放在“data/d ...

  8. Spring Security 指定登陆入口

    spring security除通过form-login的熟悉指定登陆还可以通过entry-point-ref 指定登陆入口.具体配置如下: <?xml version="1.0&qu ...

  9. 小程序url传参如何写变量

    <navigator url="../../pages/newsDetail/newsDetail?id={{news.id}}"> <view class=&q ...

  10. QT QQuickView嵌入到QT MDI中

    在学习QT的过程中发现有一个特别炫酷的行星例子“planets”,有两种实现版本: 一种是基于Qt 3D QML(planets-qml),另一种则是基于Quick和强大的Three.js(plane ...