2011-02-09 2 views
1

Я хотел бы сделать подобную вещь, чем How to "fork" a video conversion process into background, in php?:Программным получить путь к PHP

exec("/usr/bin/php ./foo.php > /dev/null 2>&1 &"); // executed in Apache 

Однако, это будет работать на различных платформах: моей машине, где PHP скомпилирован в ~ /, окна , несколько prod серверов ...

Есть ли способ программно получить часть «/ usr/bin/php»?

Что я мог думать:

  • получить текущий PID, угадать исполняемый файл из него
  • в C, первый аргумент это путь к исполняемому файлу, может быть, есть что-то подобное
+0

Если вы ожидаете использовать этот код в запросе веб-страницы (вы отметили его как apache), вы никогда не узнаете. Apache не выдает никаких двоичных файлов PHP в общих конфигурациях. –

+0

@ Dan Что такое «общие конфигурации?» suPHP? Это называется использованием двоичных файлов (php-cgi). –

+0

PHP как модуль, а не как CGI, является стандартной и наиболее распространенной конфигурацией. PHP-код работает под процессом apache. –

ответ

2

Самый простой способ - просто убедиться, что двоичный файл CLI php найден в переменной окружения $PATH, а затем просто используйте php /path/to/foo.php.

В UNIX вы также можете использовать /usr/bin/env php, который будет выполнять первый двоичный код php, содержащийся в $PATH. Но это явно не будет работать в Windows.

Наконец, один из очевидных способов состоит в том, чтобы указать местоположение в PHP в качестве настраиваемой опции и, при необходимости, использовать указанный пользователем путь.

+0

ОК, вот чего я боялся. Поскольку php может ссылаться на php4 или php5 (мне нужен php5), я пошел в config. Благодарю. – Calvin1602

Смежные вопросы