Как определить, какой PHP используется?

10

Как определить, какой PHP используется?

Например, если есть /usr/local/bin/phpи usr/local/bin/php5как узнать, какой из них используется моими PHP-скриптами?

Рэнделл
источник

Ответы:

11

Если вы используете PHP CLI, попробуйте использовать эти команды оболочки (я предполагаю, что вы используете Linux здесь)

which php - will locate the php executable (this should be the default php used by you)
whereis php - The first path displayed will be the location of the php executable
echo $PATH - will print a list of paths separated by ":" where the system looks for commands

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

Если вы хотите узнать версию php, то php -v напечатает версию php в CLI и всех установленных модулях Zend.

Если вы хотите узнать, какие ini-файлы включены, то php --ini отобразит список ini-файлов, загруженных модулем php (это относится к версии CLI).

quamis
источник
Спасибо за все вклады. Видимо, whichкоманда это то, что мне нужно.
Рэнделл
@Randell - не использовать which; используйте command -vвместо этого. Также см. Проверка, существует ли программа из скрипта Bash .
7

Просто добавьте простой скрипт

<?php phpinfo(); ?>
Чатуранга Чандрасекара
источник
Разве это не запускается phpиз логина пользователя; и не обязательно PHP, используемый Apache?
5

Предполагая, что вы используете через веб-сервер:
вы можете поместить в скрипт следующую функцию:

<?php 
phpinfo(); 
?>

Если это не работает, это может быть потому, что эта функция отключена в php.ini. Это часто делается для безопасности. Если это так, у вас в php.ini будет строка вроде:

disable_functions = phpinfo

Если это так, временно измените его на

disable_functions =

Если вы используете php для сценариев оболочки:

  1. Наверху должна быть «линия Шебанга», что-то вроде

    #! / usr / local / bin / php -q

  2. Вы уверены, что одно не является символической ссылкой на другое? делать

    ls -l / usr / local / bin / php

  3. Не ;-)

Кайл Брандт
источник
5

Также из командной строки:

$ php -v

PHP 5.2.6-3ubuntu4 с Suhosin-Patch 0.9.6.2 (cli) (сборка: 31 марта 2009 г. 02:11:31) Copyright (c) 1997-2008 PHP Group Zend Engine v2.2.0, Copyright (c) 1998- 2008 Zend Technologies

Coops
источник
Разве это не запускается phpиз логина пользователя; и не обязательно PHP, используемый Apache?
1
<?php
// prints e.g. 'Current PHP version: 4.1.1'
echo 'Current PHP version: ' . phpversion();
?>
rkthkr
источник
0

Если вы говорите о своих веб-скриптах, которые вызываются вашим веб-сервером Apache, а PHP настроен как модуль Apache, то ответ НЕТ.

Местоположения, которые вы упоминаете в своем вопросе, являются интерпретаторами сценариев командной строки, которые будут вызываться с помощью обозначений shebang, таких как

 #!/usr/local/bin/php

в верхней части вашего сценария командной строки php

Вы можете позвонить переводчикам, которых вы упомянули отдельно, так как они имеют разные имена

# php

позвонил бы / usr / local / bin / php и

# php5

позвонил бы / usr / local / bin / php5

Ни один из них не используется, если вы используете PHP через модуль Apache. Если вы используете CGI-версию php, она должна появиться в phpinfo (); вывод.


источник
0
<?php echo shell_exec('which php'); ?>

Это работает, даже если у вас нет доступа к оболочке. ;-)

yitwail
источник
Я не думаю, что это делает то, что искал человек, спрашивающий. Это только говорит вам, что среда оболочки в конечном итоге будет использовать в поиске PATH. Это не обязательно тот же PHP, что и тот, с которым выполняется скрипт.
Theuni