Я хочу запустить PHP-программу cli из PHP cli. На некоторых машинах, где это будет выполняться, устанавливаются как php4, так и php5. Если я запускаю внешнюю программу как
php5 outer.php
Я хочу, чтобы внутренний script запускался с той же версией php. В Perl я использовал бы $^X, чтобы получить исполняемый файл perl. Кажется, нет такой переменной в PHP?
В настоящее время я использую $_SERVER['_'], потому что bash (и zsh) задает переменную окружения $_ для последней программы. Но я бы предпочел не полагаться на специфичную для оболочки идиому.
ОБНОВЛЕНИЕ: Различия версий - это только одна проблема. Если PHP не находится в PATH, например, или не является первой версией, найденной в PATH, предложения по поиску информации о версии не помогут.
Кроме того, csh и варианты, как представляется, не устанавливают переменную среды $_ для своих процессов, поэтому обходной путь там не применим.
ОБНОВЛЕНИЕ 2: Я использовал $_SERVER['_'], пока не обнаружил, что он не подходит в xargs (что имеет смысл... zsh устанавливает его в команду, которую он запускал, t27 > , а не php5, а xargs не изменяет переменную). Возвращаясь к использованию:
$version = explode('.', phpversion());
$phpcli = "php{$version[0]}";