-
Notifications
You must be signed in to change notification settings - Fork 424
feat: Windows support #2119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
feat: Windows support #2119
Conversation
|
Very interesting, I had no idea that lld could link MinGW and MSVC objects together. This links against |
|
Mingw isn't used at all with this patch. Everything uses Visual Studio.
Locally, I even manage to run I also have a patch for Static PHP CLI, but it's not working because the PHP source code and Makefile on Windows doesn't support building a static version of |
That's the part I was missing, thank you! |
|
Gave it a shot and updated your initial post for instructions, however, once it attempts to serve a php file with |
|
Have you copied all the necessary DDLs in the same directory? |
|
Shouldn't be necessary with $env:PATH += ";$env:VCPKG_ROOT\installed\x64-windows\bin"
$env:PATH += ";C:\watcher-x86_64-pc-windows-msvc"
$env:PATH += ";C:\php-8.5.1-Win32-vs17-x64"Is anything else required? |
|
You must also add |
|
Same issue, I don't think it could be related to libraries anyway, as it would fail to run in the first place then. Shared libraries are (by default) loaded at initialisation time and we're not passing delayload arguments to the compilation. Log: ❯❯ frankenphp git:(windows) 21:46 .\frankenphp.exe php-server --root=./
2026/01/10 20:46:22.912 WARN admin admin endpoint disabled
2026/01/10 20:46:22.912 INFO tls.cache.maintenance started background certificate maintenance {"cache": "0x2e61d3850500"}
2026/01/10 20:46:22.912 WARN http.auto_https server is listening only on the HTTP port, so no automatic HTTPS will be applied to this server {"server_name": "php", "http_port": 80}
2026/01/10 20:46:22.949 INFO frankenphp FrankenPHP started 🐘 {"php_version": "8.5.1", "num_threads": 64, "max_threads": 64}
2026/01/10 20:46:22.950 WARN http HTTP/2 skipped because it requires TLS {"network": "tcp", "addr": ":80"}
2026/01/10 20:46:22.950 WARN http HTTP/3 skipped because it requires TLS {"network": "tcp", "addr": ":80"}
2026/01/10 20:46:22.950 INFO http.log server running {"name": "php", "protocols": ["h1", "h2", "h3"]}
2026/01/10 20:46:22.951 INFO Caddy serving PHP app on :80
2026/01/10 20:46:22.953 INFO tls storage cleaning happened too recently; skipping for now {"storage": "FileStorage:C:\\Users\\m\\AppData\\Roaming\\Caddy", "instance": "489ade52-21ab-40c6-b18a-2932fb8eab4d", "try_again": "2026/01/11 20:46:22.953", "try_again_in": 86400}
2026/01/10 20:46:22.953 INFO tls finished cleaning storage units
❯❯ frankenphp git:(windows) 21:46Text files like an index.html page are served just fine. Only when php is attempted to be executed does the program simply stop. |
|
I didn't try the |
|
Could you also show me the content of your PHP script? |
|
Content of the php script: <?php
echo phpinfo();I haven't ran the test suite yet, but |
Closes #83 #880 #1286.
Working patch for Windows support.
Supports linking to the official PHP release (TS version).
Includes some work from #1286 (thanks @TenHian!!)
This patch allows using Visual Studio to compile the cgo code. To do so, it must be compiled with Go 1.26 (RC) with the following setup:
TODO: