Microsoft Support of PHP on Windows
news-web.php.net
news-web.php.net
Key takeaway:
>This message means Microsoft aren't going to produce official builds for PHP 8 onwards.
>This message does NOT mean that nobody will.
Zend had nice marketing, but had been only one contributor under many. Far from owning PHP.
My experience with PHP on Windows has been continously terrible. Was there some trick I missed? I have never seen any options in a vanilla IIS to enable PHP.
I'm sure someone will pick this up. Or maybe it ends up being something like Apache where you have to find other places in the ecosystem which provide binaries for Windows. Or just compile the thing yourself.
https://windows.php.net/download/
There's vague Tweets here...
https://twitter.com/dalehirt/status/1281300688102801408
Seems Dale in moving on to different things and there's nobody to replace him?
You can see his Github activity here...
ETA: Looks like a lot of this info has already been located and posted in the mentioned Reddit thread.
Except they never do, because they don't know PHP on Windows either and are afraid of breaking things, and the customer ends up with a PHP/Wordpress installation that is 4 years out of date. Luckily, most of those are internal-only apps, but it still sucks.
Where I used to work, we developed and supported a SaaS app based on PHP with PostgreSQL and Apache. We had two self-hosting customers who ran on Windows Server with SQL Server for the exact reasons mentioned, and they were our most troublesome customers. Performance tuning (and hence regular complaints that 'our' app was horribly slow) was a particular issue - mostly due to their admins' lack of relevant experience on both the stack...and Windows Server(!). The whole setup was a pain because we got so much flak, despite the premise of 'self-hosting' being that the customer had sufficient smarts to support the infrastructure and stack and we'd just support the functional and development aspects of the app.
One customer also had the system so locked down that for remote admin we had to connect to a jump box via VPN + RDP and then jump from that to the server with another RDP connection. Fetching large log files through that setup was a challenge.
Partly for our sanity, we persuaded one customer to let us migrate them to a Linux server; that went very well and really cut down on angst all round even though we then took responsibility for platform support.
In my limited experience, this is the sales team saying 'anything' to get the sale.
The logic behind it was that the client had some other websites running on some .NET CMS (not .NET Core), so it made sense for them to run WordPress on the same one instead of getting another one.
Manufacturing Execution Systems run on Windows; when virtually all your servers are Windows because of the apps you need to run, setting up a few Linux servers for minor apps for internal use only is not worth, so PHP in fast-CGI more under IIS is a very simple and effective solution.
Having support people with good expertise on both Windows and Linux is expensive, having 2 separate teams in expensive (if you need high uptime), especially when the ratio Windows to Linux is just 10:1 or 20:1. Keep it simple, run PHP on Windows.
EDIT: I forgot to mention the pseudo-SSO called Windows Integrated Authentication that works with just a few clicks on Windows, probably a lot more key presses (typing) in Linux.
With Apache, it's an unstable mess. IIS on the other hand works extremely well with PHP, we've had virtually 0 issues in more than 10 years using it for many different projects.
IIS is fine if it works just like Windows apps generally are fine when they work its the odd time where it breaks that you are mystified about the whole thing.
I've found it to be pretty good using FastCGI.
And no, it probably wouldn't be WSL, it'd be using this. Because not everyone I work with is comfortable with Linux tooling and who knows if our management tools can see what's going on with it.
In a Windows environment, the best tool for the job is almost always another Windows box. Arguably, sure, PHP is a poor choice for a Windows environment, but IT/operations rarely has the luxury of deciding what line of business apps other departments use.
Main reasons familiarity started as a windows application developer, the gui in my case window explorer feels easier for the tasks that I need do.
I have setup webservers on linux as well, Just I work faster in windows can fix things easier then having to google with linux when things go wrong. I prefer the windows file permissions
At work, we have an on-premise customer support application that relies on PHP being installable on Windows, and requires the official SqlServer drivers for PHP (since they are the ones that...work).
We have many customers on Windows infrastructure; PHP on Windows Server is definitely a real use-case.
So lacking a PHP option would definitely be an issue for us!
But also: In all of Microsoft, is PHP on Windows really just relying on one person????????
Back when I was still coding PHP on Windows, I just used the XAMPP bundle to get the entire web stack up and running in minutes. Granted, that was 10 years ago, I'm neither coding PHP nor coding on Windows now, so I'm a bit out of the loop.
Surely I'm not the only person who has worked on PHP application that needed to stay running while it was being converted, piece by piece, to ASP.NET? Of course these days with dotnet Core this can all be done on Linux or the traffic routing can be trivially handled by nginx...
I'm trying to think of an answer to "We've got to do this on Windows!" but nothing realistic is coming to mind that doesn't involve legacy-ware that is over ten years old -- which is still beyond the scope of this general discussion.
Surely I would think that "PHP on Windows" going forward would be a feature delivered from WSL and not on Windows itself.
Windows server vm, IIS, PHP 7, and sql server. This replaced an asp app.
My only major issues were SQL driver or coding. I did struggling with session timeouts for a while.
I really wish I had known about nginx back then. Even if it were just to show a "down for maintenance" screen while doing a release.
Edit: I upgraded to php 7 in early 2016 before the app officially launched
And there were always some traps (mostly because of the lack of case sensitive file names), so I feel it’s better to not use it anymore at all (the edge cases must be very low)
Nowadays Azure App Service also supports Linux, so there’s no so big need for PHP on this side.
I don’t think Microsoft is doing anything that could not be technically done by somebody else.
This is generally true. PHP had Windows support early on and builds provided by community.
Having Microsoft backing it meant there were people with more time for it and some Windows-specific optimisation could be done, by people with access to true Windows experts. This gave a boost in the early days of their involvement.
Sure, and usually in a hasty fashion, when they have time, understaffed, as is the case with many ports.
Instead, Microsoft wants this to be more high quality, to attract PHP devs to the platform and get PHP-based business on Azure/Windows, integrate it with their Windows dev tools, build goodwill etc, so they fund this and have some people working on it.
Politically though, it might be a big deal. Microsoft don't think supporting a native Windows build of PHP is worthwhile. That could say something about the server-side scripting language landscape changing. On the other hand, it might just say that it costs a few hundred thousand dollars of engineering time every year and they believe that could be allocated better. There's no way to know from a single post.
Nevertheless nowadays there is WSL and Docker so you don‘t really need a windows native executable.
So, it's no longer necessary for PHP (or anything else Linux-y) to be natively supported on the Windows OS; anyone can just boot up WSL and run it there, where it will work better anyway.
I remember before the windows.php.net day --- setting up PHP on Windows is much more of a mess that most people just use some kind of bundle (XAMPP, WAMP, etc)
* Used to run PHP on Windows, because $WORK had a tiny deployment that didn't need an extra server. In retrospect, getting a small cloud vm would have worked better, but letsencrypt wasn't around back then.
With the new Linux subsystem, does Windows even need separate support for PHP anymore?
For Windows client, maybe not.
But some people run PHP on Windows Server in actual production scenarios (using either Apache or IIS) and those people absolutely need a native solution: WSL[2] has too much overhead.
SHOULD you be using PHP on Windows Server? Likely not, but it is more common than you'd think, I've personally worked at multiple companies that had a Wordpress based site running on IIS for example. This was pre-Cloud though so YMMV.
[1] https://devblogs.microsoft.com/commandline/windows-package-m...
No, seriously. Haven't you heard about ASP.NET Core and the like? Even Azure is actively pushing Linux + .NET Core these days.
Microsoft even fully embraced the community built package manager and they release important packages under it. You no longer need to upgrade your whole .NET platform (with some exceptions) just to use new packages from Microsoft that boost the ecosystem.
I have used .NET Core on both Ubuntu and Mac (which has its own Visual Studio - not Code) and it runs just the same.
Why so unreasonable claims?
It's works very well
The Unix kernel is one of the most widely deployed in the world. I don't think it's going anywhere in the next 100 years.
Which one? Linux?
By that logic Windows NT kernel won't go anywhere in 100 years either, since it runs on nearly a billion devices.
I'm pretty sure there will be a workloads running on NonStop well into the 21st century too.
So, there's no reason to think we will be free of Windows anytime soon either.
Rest of Unix certified implementations are however not widely deployed. I don't see many AIX, Solaris production machines anywhere since everyone often deploys Linux instead.
Same story applies to *BSD family.
The only thing that keeps the Unix identity on those system is the Posix interface which is also extremely outdated on modern systems and it's kept around as a legacy.