[Bug]: "No usable PHP version found"
Platform
Windows
Operating system version
Windows 11
System architecture
Windows
Herd Version
1.21.2
PHP Version
PHP 8.4
Bug description
I installed Laravel Herd on a fresh Windows 11 install, but it’s not working correctly. If I check in the terminal by running herd, I get: No usable PHP version found
I’ve tried several solutions found in the issues section, but none of them work.
herd --version "No usable PHP version found"
php --version PHP 8.4.11 (cli) (built: Jul 29 2025 18:02:29) (NTS Visual C++ 2022 x64) Copyright (c) The PHP Group Zend Engine v4.4.11, Copyright (c) Zend Technologies with Zend OPcache v8.4.11, Copyright (c), by Zend Technologies
laravel --version Laravel Installer 5.16.0
composer --version Composer version 2.8.10 2025-07-10 19:08:33 PHP version 8.4.11 (C:\Users\bogda.config\herd\bin\php84\php.exe) Run the "diagnose" command to get more detailed diagnostics output.
node --version Der Befehl "node" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
It seems that NVM hasn't been installed either. If I activate an SSL certificate, it just shows a loading screen endlessly and nothing else happens.
Steps to reproduce
No response
Relevant log output
I think they withdrew the PHP 8.4.11 release, although I can't find any information about that. It doesn't appear on https://github.com/php/php-src/releases and wasn't published to docker hub.
So that might have something to do with it. Try with 8.4.10 and see if it helps.
I couldn't downgrade to 8.4.10, but I installed 8.3.24 instead. I restarted the system and ran it with admin rights. Same issue: "No usable PHP version found."
Try 8.3.23 😄 that 8.3.24 was "released" on the same day as 8.4.11 and is also not on the releases-list (anymore?).
But in any case, I'm just guessing here. I was looking for information about 8.4.11 when I found this issue.
As you know, in Herd I can't choose the exact version.
@BogdanGewaldCosnova could you tell me the output of "where.exe php84"?
where php C:\Users\bogda.config\herd\bin\php.bat
where.exe php84 C:\Users\bogda.config\herd\bin\php84.bat
There should be a slash between your username and .config. Does your username contain any weird special characters? And does that folder actually exist?
yes it is with slash . (copy paste error.) yes the folder exist
Can you check the find-usable-php.php file? We are basically just checking for the existence of these files in there 🤔
So if I run find-usable-php.php it finds the file in C:\Users\bogda.config\herd\bin\find-usable-php.php
`<?php
$minimumPhpVersion = '8.1';
// First, check if the system's linked "php" is 8+; if so, return that. This // is the most likely, most ideal, and fastest possible case $linkedPhpVersion = shell_exec('php -r "echo phpversion();"');
$binPath = ''; if (array_key_exists('HOME', $_SERVER)) { $binPath = $_SERVER['HOME'] . '.config\herd\bin\php'; } else if (array_key_exists('HOMEPATH', $_SERVER) && array_key_exists('HOMEDRIVE', $_SERVER)) { $binPath = $_SERVER['HOMEDRIVE'] . $_SERVER['HOMEPATH'] . '.config\herd\bin\php'; }
if ($binPath === '') { return; }
if (version_compare($linkedPhpVersion, $minimumPhpVersion) >= 0) { if (file_exists($binPath . '84' . DIRECTORY_SEPARATOR . 'php.exe')) { echo $binPath . '84' . DIRECTORY_SEPARATOR . 'php.exe'; } elseif (file_exists($binPath . '83' . DIRECTORY_SEPARATOR . 'php.exe')) { echo $binPath . '83' . DIRECTORY_SEPARATOR . 'php.exe'; } elseif (file_exists($binPath . '82' . DIRECTORY_SEPARATOR . 'php.exe')) { echo $binPath . '82' . DIRECTORY_SEPARATOR . 'php.exe'; } elseif (file_exists($binPath . '81' . DIRECTORY_SEPARATOR . 'php.exe')) { echo $binPath . '81' . DIRECTORY_SEPARATOR . 'php.exe'; }
return;
}
if (file_exists($binPath . '83' . DIRECTORY_SEPARATOR . 'php.exe')) { echo $binPath . '83' . DIRECTORY_SEPARATOR . 'php.exe'; return; }
echo $binPath . '82' . DIRECTORY_SEPARATOR . 'php.exe'; `