How to determine which PHP is being used?
For example, if there are /usr/local/bin/php
and usr/local/bin/php5
, how do I know which one is being used by my PHP scripts?
If you are using the PHP CLI, then try using theese shell commands (i'm assuming that you are using linux here)
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
If you are using PHP as an Apache module then phpinfo() will tell you the php version used, and the php config files, NOT the php path. If you have 2 versions of the php executable then this will help you. If they are the same version then it wont really matter which one is who:)
If you want to find out the php version, then php -v will print the php version in the CLI and any Zend modules installed.
If you want to find out the ini files included then php --ini will display th list of ini files loaded by the php module (this applies for the CLI version).
which
command is what I needed.
which
; use command -v
instead. Also see Check if a program exists from a Bash script.
Just add a simple script
<?php phpinfo(); ?>
php
from a user's login; and not necessarily the the php used by Apache?
Also from the commandline:
$ php -v
PHP 5.2.6-3ubuntu4 with Suhosin-Patch 0.9.6.2 (cli) (built: Mar 31 2009 02:11:31) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
php
from a user's login; and not necessarily the the php used by Apache?
Assuming You are Using through Web Server:
You can put the following function in a script:
<?php
phpinfo();
?>
If this doesn't work, it could be because this function is disabled in the php.ini . This is often done for security. If this is the case, you will have a line in your php.ini like:
disable_functions = phpinfo
If this is the case, temporarily change it to
disable_functions =
If you are Using php for Shell Scripts:
There should be the 'shebang line' at the top, something like
#!/usr/local/bin/php -q
Are you sure one isn't a smybolic link to the other? do
ls -l /usr/local/bin/php
Don't ;-)
<?php
// prints e.g. 'Current PHP version: 4.1.1'
echo 'Current PHP version: ' . phpversion();
?>
If you are talking about your web-scripts that are called by your Apache webserver and PHP is configured as an Apache module then the answer is NONE.
The locations you mentionend in your question are command line script interpreters that would be called by shebang notation like
#!/usr/local/bin/php
at the top of your php-command line script
you can call the interpreters you mentioned separately, since they have different names
# php
would call /usr/local/bin/php and
# php5
would call /usr/local/bin/php5
Neither one of those is used if you use PHP via the Apache module. If you use the CGI-Version of php it should show up in the phpinfo(); output.
<?php echo shell_exec('which php'); ?>
This works even if you don't have shell access. ;-)