If the PHP executable path has a space in it, it breaks valet. For example, when using the new Laravel Herd which stores its config and binaries under `~/Library/Application Support/Herd/...`
* Get PHP executable for a PHP 8+ version even if linked PHP is below 8
This allows users to run PHP 7.4 (haven't tested in below 7.4) while the codebase is PHP 8+.
* Apply fixes from StyleCI
* Return correct path for linked PHP
* Apply fixes from StyleCI
* Add PHP@7.2 support
* Add support for PHP 7.0-7.2
Co-authored-by: StyleCI Bot <bot@styleci.io>
* Extract basic driver with public/ from basic driver, and simplify both
* Apply fixes from StyleCI
* Set HTTP_HOST in BaseDriverTest
* Move server helpers to their own file; add type hints
* Update drivers location and loading
- Extract much of server.php into a `Server` class
- Move all but the Laravel and Basic drivers into a subfolder
- Load all but the Laravel and Basic drivers via glob
- Add `beforeLoading` hook to simplify the `frontControllerPath` method for some drivers
* Apply fixes from StyleCI
* Add additional notes to upgrade.md
* Apply fixes from StyleCI
* Require PHP 8.0
* Add type hints and return type hints to Brew
* Apply fixes from StyleCI
* Add type hints and return type hints to CommandLine
* Add type hints and return type hints to Configuration
* Add type hints and return type hints to Diagnose
* Apply fixes from StyleCI
* Add type hints and return type hints to DnsMasq
* Add type hints and return hints to Filesystem
* Add type hints and return types to Nginx
* Add type hints and return types to ngrok
* Add type hints and return types to PhpFpm
* Apply fixes from StyleCI
* Add type hints and return types to Site and Valet
* Apply fixes from StyleCI
* Require passing a version number to isolate command
* Apply fixes from StyleCI
* Bump compat to php 8; add type hints and return types to helpers
* Apply fixes from StyleCI
* Use constructor promotion
* Apply fixes from StyleCI
* Write tests for Server.php
* Apply fixes from StyleCI
* Move upgrade calls into Upgrader class, and add upgrade to check for old custom drivers
* Apply fixes from StyleCI
* Replace some \n with PHP_EOL; move custom drivers into Custom namespace
* Apply fixes from StyleCI
* Add doc blocks
* Clean up NullWriter; drop legacy config check
* Allow null response from frontControllerPath
* Apply fixes from StyleCI
* Drop exits, fix 404 path
* Better handle new installations
* Apply fixes from StyleCI
* Drop extensions
* Clean up DX for fetch-share-url
* Apply fixes from StyleCI
* Fix site::unlink method signature and docblock
* Tweak the wording for the which command
* Support isolated sites running PHP 7.4
* Add a bunch more CLI command tests (#1332)
* Wip some cli tests
* Apply fixes from StyleCI
* Test parked command
* Test forget command
* Update Filesystem::rmDirAndContents to respect symlinks
* Wip cli commands
* Apply fixes from StyleCI
* Test link command, unlink command, and secure command
* Apply fixes from StyleCI
* Add tests for unsecure, unsecure --all, secured commands
Add placeholders for the remaining CLI commands
Add nginx::restart to unsecure --all command
Co-authored-by: StyleCI Bot <bot@styleci.io>
* Drop old config migrations
* Add status command (#1329)
* Build the foundation of a status command
* Apply fixes from StyleCI
* Wip testing status command
* Apply fixes from StyleCI
* Fix status test
* Apply fixes from StyleCI
* Fix race condition in creating test config file
* Apply fixes from StyleCI
* Reset container for each test
* Differentiate response code based on success or failure of status command
* Apply fixes from StyleCI
* Add the ability to test if a Brew service is running
* Apply fixes from StyleCI
* Check for more services running in status command
* Apply fixes from StyleCI
* Test Status
* Apply fixes from StyleCI
* Drop Yoast from base application test case
Co-authored-by: StyleCI Bot <bot@styleci.io>
* Test most of the remaining CLI commands
* Test set tld command
* Test set loopback command
* Test proxy, unproxy, and proxies commands
* Apply fixes from StyleCI
* Test which command
* Test diagnose command
* Test directory-listing and which-php commands
* Text isolate and unisolate and isolated commands
* Apply fixes from StyleCI
* Test trust command
* Apply fixes from StyleCI
* Test on-latest-version command
* Move uninstall text to a class, and tweak text and presentation
* Apply fixes from StyleCI
* Test use command
* Test stop command
* Test start command
* Test restart command
Co-authored-by: StyleCI Bot <bot@styleci.io>
* Drop unnecessary doc blocks (#1339)
* Drop unnecessary doc blocks
* Apply fixes from StyleCI
Co-authored-by: StyleCI Bot <bot@styleci.io>
* Tweak status output and install output
* Add debug instructions to valet status, expand "valet installed" status check
* Drop extensions directory
* Apply fixes from StyleCI
* Remove more docblocks
* Upgrade ngrok to 3.1.0
* Test force uninstall command
* Test log command
* Drop copying Ngrok share to clipboard; add first steps of Expose code
* Add logic paths for Expose vs. ngrok and the share-tool config
* Apply fixes from StyleCI
* Take the first steps of manually installing ngrok and expose when needed
* Apply fixes from StyleCI
* Next steps Brew-installed ngrok
* Apply fixes from StyleCI
* Add class to represent Composer; continue ngrok + expose updates
* Apply fixes from StyleCI
* Add ensureInstalled() method to Expose and installOrFail() to Composer
* Apply fixes from StyleCI
* Require global PHP 8+ to install
* Exit if invalid domain is passed to valet share
* Update Composer dependencies to use Illuminate/Container
* Drop the idea of passing a custom domain to valet share
Co-authored-by: StyleCI Bot <bot@styleci.io>
This PR allows passing a specific domain name to `valet share` in order to have the app be served for that domain.
Now how it works is this:
- (NEW) if a domain name is passed, it checks whether it matches a link (which would be required for multiple domains served by same app project), and uses that
- if a domain name is NOT passed, it looks up any links for current directory, and uses the first found link
- else falls back to current project foldername
It also still allows passing through custom ngrok parameters if desired (ref: #112), as either the 2nd parameter (no domain name passed) or (NEW) 3rd parameter
Fixes#537
Since the current TCP port 88 clashes with Kerberos, changing it to port 60 which IANA shows as unassigned, and other databases show as not being used in general practice.
Several alternates were researched, but show (although limited use, nevertheless possible) clashes with other systems, including ports 47, 81-90, 8080-8090, and 100. Various sources were referenced, and the overall conclusion is that 60 seems to be the safest and least likely to conflict.
Tested against a few limited firewall configs without issue.
Tested with both fresh new valet installs and an older install upgraded from 2.0.x.
The `valet share` command relies on the `tld` command outputting only the TLD and not a status message.
This removes the status message that was added with the recent tld update.
This makes it possible to add custom parameters to ngrok. For example:
--region=eu
-subdomain=YOUR_SUBDOMAIN
Some features, like -subdomain, are only available with the paid version of Ngrok.