Я хочу запустить 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]}";