Jak ustalić, który PHP jest używany?

10

Jak ustalić, który PHP jest używany?

Na przykład, jeśli istnieją /usr/local/bin/phpi usr/local/bin/php5skąd mam wiedzieć, który jest używany przez moje skrypty PHP?

Randell
źródło

Odpowiedzi:

11

Jeśli używasz interfejsu CLI PHP, spróbuj użyć tych poleceń powłoki (zakładam, że używasz linux tutaj)

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

Jeśli używasz PHP jako modułu Apache, to phpinfo () poinformuje o używanej wersji php, a pliki konfiguracyjne php, NIE ścieżkę php . Jeśli masz 2 wersje pliku wykonywalnego php, to ci pomoże. Jeśli są to te same wersje, to nie będzie miało znaczenia, kto jest kim :)

Jeśli chcesz dowiedzieć się o wersji php, to php -v wypisze wersję php w CLI i zainstalowanych modułach Zend.

Jeśli chcesz znaleźć zawarte w nim pliki ini, php --ini wyświetli listę plików ini załadowanych przez moduł php (dotyczy to wersji CLI).

quami
źródło
Dzięki za wszystkie dane wejściowe. Najwyraźniej whichpolecenie było tym, czego potrzebowałem.
Randell
@Randell - Nie używaj which; użyj command -vzamiast tego. Zobacz także Sprawdź, czy program istnieje ze skryptu Bash .
7

Po prostu dodaj prosty skrypt

<?php phpinfo(); ?>
Chathuranga Chandrasekara
źródło
Czy to nie uruchomi się phpz loginu użytkownika; i niekoniecznie php używany przez Apache?
5

Zakładając, że korzystasz z serwera sieci Web:
W skrypcie możesz umieścić następującą funkcję:

<?php 
phpinfo(); 
?>

Jeśli to nie zadziała, może to być spowodowane tym, że ta funkcja jest wyłączona w php.ini. Często odbywa się to dla bezpieczeństwa. W takim przypadku w pliku php.ini pojawi się wiersz:

disable_functions = phpinfo

W takim przypadku zmień go tymczasowo na

disable_functions =

Jeśli używasz php do skryptów powłoki:

  1. Na górze powinna znajdować się „linia shebang”, coś w rodzaju

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

  2. Czy na pewno jeden nie jest linkiem smybolicznym do drugiego? zrobić

    ls -l / usr / local / bin / php

  3. Nie ;-)

Kyle Brandt
źródło
5

Również z wiersza poleceń:

$ php -v

PHP 5.2.6-3ubuntu4 z łatką Suhosin 0.9.6.2 (cli) (zbudowany: 31 marca 2009 02:11:31) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998- 2008 Zend Technologies

Coops
źródło
Czy to nie uruchomi się phpz loginu użytkownika; i niekoniecznie php używany przez Apache?
1
<?php
// prints e.g. 'Current PHP version: 4.1.1'
echo 'Current PHP version: ' . phpversion();
?>
rkthkr
źródło
0

Jeśli mówisz o swoich skryptach sieciowych, które są wywoływane przez serwer Apache, a PHP jest skonfigurowany jako moduł Apache, odpowiedź jest BRAK.

Lokalizacje, o których wspominasz w swoim pytaniu, to interpretery skryptów wiersza poleceń, które można nazwać notacją typu shebang

 #!/usr/local/bin/php

na górze skryptu linii poleceń php

możesz zadzwonić do tłumaczy, o których wspomniałeś osobno, ponieważ mają oni różne nazwiska

# php

wywołałby / usr / local / bin / php i

# php5

wywołałby / usr / local / bin / php5

Żaden z nich nie jest używany, jeśli używasz PHP za pośrednictwem modułu Apache. Jeśli używasz wersji CGI php, powinna pojawić się w phpinfo (); wynik.


źródło
0
<?php echo shell_exec('which php'); ?>

Działa to nawet, jeśli nie masz dostępu do powłoki. ;-)

Yitwail
źródło
Nie sądzę, żeby działało tak, jak szukała tego osoba. Mówi to tylko o tym, jakie środowisko powłoki byłoby używane podczas wyszukiwania PATH. Niekoniecznie jest to ten sam PHP, który jest wykonywany przez skrypt.
Theuni