体验 PHP under .NET Core
昨天在 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的更多相关文章
- dotnet core开发体验之开始MVC
开始 在上一篇文章:dotnet core多平台开发体验 ,体验了一把dotnet core 之后,现在想对之前做的例子进行改造,想看看加上mvc框架是一种什么样的体验,于是我就要开始诞生今天的这篇文 ...
- dotnet core多平台开发体验
前言 随着net core rc2的发布,园子里面关于net core的入门文章也也多了起来,但是大多数都是在一个平台上面来写几个简单的例子,或者是在解释代码本身,并没有体现说在一个平台上面创建一个项 ...
- .NET Core多平台开发体验[1]: Windows
微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...
- .NET Core多平台开发体验[2]: Mac OS X
除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux(RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE等)都提供了很好的支持,我们先来体验 ...
- .NET Core多平台开发体验[4]: Docker
对于一个 .NET开发人员,你可能没有使用过Docker,但是你不可能没有听说过Docker.Docker是Github上最受欢迎的开源项目之一,它号称要成为所有云应用的基石,并把互联网升级到下一代. ...
- .NET Core多平台开发体验[3]: Linux (Windows Linux子系统)
如果想体验Linux环境下开发和运行.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像R ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Docker
对于一个 .NET Core开发人员,你可能没有使用过Docker,但是你不可能没有听说过Docker.Docker是Github上最受欢迎的开源项目之一,它号称要成为所有云应用的基石,并把互联网升级 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Linux
如果想体验Linux环境下开发.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像RHEL ...
随机推荐
- C#获取网页的HTML码、下载网站图片 get post
/// <summary> /// 获取网页的HTML码 /// </summary> /// <param name="url">链接地址&l ...
- Swift搭建本地http服务器,实现外部视频即时播放
最近项目有个小需求,需要ios实现手机作为服务端,将内部视频文件,在外面能够直接访问 结合网上的例子,实现如下: 1.基于CocoaHTTPServer实现 2.可用pod集成,也可直接拖动文件集成 ...
- 【编码题篇】收集整理来自网络上的一些常见的 经典前端、H5面试题 Web前端开发面试题
编写一个方法 求一个字符串的字节长度假设:一个英文字符占用一个字节,一个中文字符占用两个字节 function GetBytes(str){ var len = str.length; var byt ...
- 如何保留自己对eclipse的个性化设置,在其他工程中使用
有的个性化设置是在功能的.metadata\.plugins文件夹下保存.所以新建功能后,个性化设置都没有了. 解决办法: 新建一个工程后,调好个性化配置.然后备份整个工程. 以后不要新建工程,直接解 ...
- ASCII、Unicode和UTF-8编码的区别
归纳: 编码 大小 支持语言 ASCII 1个字节 英文 Unicode 2个字节(生僻字4个) 所有语言 UTF-8 1-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节 所有语言 具体 ...
- JS控制音频顺序播放
做一项目,用到“叫号功能”,网页上有一“叫号”按钮,点击后就读数据库中存的号码,如123号, 然后就发声音出来, 思路是网上下载0123456789的叫号声音,然后按钮点击事件里就在JS里写用那个HT ...
- TypeScript学习笔记(九):装饰器(Decorators)
装饰器简介 装饰器(Decorators)为我们在类的声明及成员上通过元编程语法添加标注提供了一种方式. 需要注意的是:装饰器是一项实验性特性,在未来的版本中可能会发生改变. 若要启用实验性的装饰器特 ...
- 透彻理解Spring事务设计思想之手写实现
前言 事务,是描述一组操作的抽象,比如对数据库的一组操作,要么全部成功,要么全部失败.事务具有4个特性:Atomicity(原子性),Consistency(一致性),Isolation(隔离性),D ...
- 每日英语:Dashing the China Dream
Much has been said about what the 'China Dream' really means to many Chinese -- whether it is nation ...
- js中如何把字符串转化为对象、数组示例代码
很明显是一个对象,但如何把文本转为对象呢.使用eval();注意一定要加括号,否则会转换失败 把文本转化为对象 var test='{ colkey: "col", colsinf ...