Reputation: 404
My phpinfo() shows the version to be 7.1.23. But when I execute php -v on terminal, it shows the version to be 7.3.10. How do I get the phpinfo version to be the same as the CLI/terminal? I followed the steps by user corretge on this question: different result between phpinfo.php and php-v which I assumed would resolve the issue, but it didn't. I also added these lines to my httpd.conf file:
LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>
I added all the above code right below the last LoadModule (etc etc etc)
text. The location of my httpd.conf is:
/etc/apache2/httpd.conf
So doing all that for whatever reason did not work. I installed via Curl at first, it didn't update the phpinfo version, and did the same just now via Homebrew, and same - no updated result.
I am using macOS High Sierra 10.13.6
When I run this command:
/usr/local/bin/php -v
the result is:
PHP 7.3.10
When I run this command:
/usr/bin/php -v
the result is:
PHP 7.1.23
Upvotes: 3
Views: 2592
Reputation: 1270
LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so <FilesMatch .php$> SetHandler application/x-httpd-php </FilesMatch>
Your LoadModule directive in httpd.conf file points to php71 path. You may want to change that to php73 path. Also, set the handler properly:
SetHandler application/x-httpd-php73
If you just had one php version, then x-httpd-php would work. Restart apache to ensure new configurations are loaded.
You may also need to do additional setup mentioned below. I am not sure if that's necessary, but you may give it a try.
In your php_info() output, you would see loaded configuration file - php.ini path. Go to that path and add the
AddHandler application/x-httpd-php73 .php
To switch to PHP 7.3
AddHandler application/x-httpd-php73 .php
To switch to PHP 7.1
AddHandler application/x-httpd-php71 .php
Details
PHP lets you load multiple php.ini files with a provision to override them in particular folder.
When you run the PHP script with phpinfo(), it would load the nearest php.ini to that file. It may be the root level or any other php.ini that is present in the folder hierarchy above.
Whereas when you run from terminal, it would run PHP from the path that is registered in your environment variable. When you run from terminal, I doubt apache configuration would come into the picture, so changing anything in apache configuration won't have an effect on terminal execution. The Apache PHP module and the PHP command line binary are two different things that don’t interfere with each other.
printenv PATH
This would have a path to your PHP. Remove that and put new one by
export PATH=/usr/local/php73/bin:$PATH
You can also use an alias instead. Add the following to your .bash_profile file.
alias php='/usr/local/php73/bin/php'
This works the same as the export PATH when added to your .bash_profile.
Upvotes: 1
Reputation: 2959
Try to see what program your /usr/bin/php
and /usr/local/bin/php
are actually calling:
ll /usr/bin/php
ll /usr/local/bin/php
Very likely, just like @Always Sunny said, you will find out that you have two versions of the PHP installed on your machine. In other words, these links are calling different executables.
Upvotes: 5