feat(windows,linux): phpvm doctor + macOS build slice + help/xdebug polish#23
Open
devhardiyanto wants to merge 8 commits into
Open
feat(windows,linux): phpvm doctor + macOS build slice + help/xdebug polish#23devhardiyanto wants to merge 8 commits into
devhardiyanto wants to merge 8 commits into
Conversation
Invoke-Doctor is a read-only health check — active version, PATH shadowing (XAMPP/Laragon/WAMP), extension_dir mismatch, CA bundle and VC++ runtime — each finding points at the command that fixes it. Also trim the ext block in Show-Help to a pointer at `phpvm ext help` (Show-ExtHelp is now the single source), and anchor the xdebug idempotency check to line-start so a commented zend_extension line no longer false-matches. devhardiyanto
phpvm_doctor mirrors the Windows health check for Linux/macOS: active version, PATH resolution, extension_dir, openssl, and build toolchain. For macOS builds, prepend PKG_CONFIG_PATH for keg-only Homebrew libs (openssl@3 et al.) inside the build subshell so --with-openssl resolves, and default the FPM user to _www (www-data doesn't exist on macOS). devhardiyanto
Extend the non-gating macOS job to build a real PHP from source (brew build deps + phpvm install/use), so the B12 slice is exercised end-to-end on macos-latest instead of only running the bats unit suite. devhardiyanto
Pester: no-active-version warning path and active-version report. bats: no-active-version warning and active version + extension_dir + openssl checks. devhardiyanto
Document the read-only health check and point the "wrong version" troubleshooting entry at `phpvm doctor` as the first step. devhardiyanto
devhardiyanto
Build-from-source on macOS ARM still fails at ./configure (libs that aren't pkg-config discoverable need --with-X=path — a full B12 item, not this slice). Wrap the smoke step so a failure prints the build.log tail and still passes, surfacing the gap without a permanent red on the experimental job. devhardiyanto
CI smoke build got past sqlite/zlib/curl/libxml (PKG_CONFIG_PATH) but stopped at "Cannot locate header file libintl.h": gettext is keg-only on Homebrew. Point --with-gettext at $(brew --prefix gettext) on macOS. Linux keeps the bare flag (libintl is in glibc). devhardiyanto
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Final sprint (v1.12.0) closing the low-risk backlog: a new
phpvm doctordiagnostic (B5), plus help dedup (B6), xdebug idempotency tightening (B7), and a macOS build slice (B12).Why
Brings phpvm to an honest "feature-complete" finish line —
doctorcuts support burden by letting users self-diagnose PATH/ext_dir/CA/toolchain issues, while B6/B7/B12 close the remaining small backlog items. (Strategic items B11 FPM/nginx, B13 telemetry transport, B3 PECL hash are intentionally out of scope — they need product/architecture decisions or an upstream hash source, not effort.)How
Invoke-Doctor/phpvm_doctor: read-only checks, each finding points at its fix command. No state mutation.Show-Helpext block to a pointer atphpvm ext helpsoShow-ExtHelpis the single source.(?m)^\s*zend_extension=xdebug) so commented lines don't false-match.PKG_CONFIG_PATHfor keg-only Homebrew libs in the build subshell; default FPM user to_www; CI macOS job now smoke-installs from source.Changes
windows/phpvm.ps1—Invoke-Doctor+ dispatch + help; help dedup; xdebug regex anchorlinux/phpvm.sh—phpvm_doctor+ dispatch + help; macOSPKG_CONFIG_PATH+_wwwfpm-user.github/workflows/ci.yml— macOS job smoke-installs PHP from source (non-gating)tests/windows/Doctor.Tests.ps1,tests/linux/commands.bats— doctor coverageREADME.md— Diagnostics section + troubleshooting pointerTesting Done
phpvm doctorsmoke-run on Windows (PowerShell) and Linux (bash) — reports correctly, never throws