phpinfo () не обновляется до версии терминала? - PullRequest
2 голосов
/ 05 октября 2019

Мой phpinfo () показывает версию 7.1.23. Но когда я выполняю php -v на терминале, он показывает версию 7.3.10. Как мне сделать версию phpinfo такой же, как и CLI / терминал? Я следовал инструкциям пользователя corretge по этому вопросу: различный результат между phpinfo.php и php-v , который, как я предположил , решит проблему, но это не так. Я также добавил эти строки в мой файл httpd.conf:

LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
<FilesMatch .php$>
    SetHandler application/x-httpd-php
</FilesMatch>

Я добавил весь приведенный выше код прямо под последним LoadModule (etc etc etc) текстом. Местоположение моего httpd.conf:

/etc/apache2/httpd.conf

Так что все это по какой-то причине не сработало. Сначала я установил через Curl, он не обновил версию phpinfo, и сделал то же самое только сейчас через Homebrew, и то же самое - без обновленного результата.

Я использую macOS High Sierra 10.13.6

Когда я запускаю эту команду:

/usr/local/bin/php -v

результат:

PHP 7.3.10

КогдаЯ запускаю эту команду:

/usr/bin/php -v

результат:

PHP 7.1.23

Ответы [ 2 ]

5 голосов
/ 08 октября 2019

Попробуйте посмотреть, какую программу на самом деле вызывают ваши /usr/bin/php и /usr/local/bin/php:

ll /usr/bin/php
ll /usr/local/bin/php

Скорее всего, как сказал @Always Sunny, вы обнаружите, что у вас есть две версииPHP установлен на вашем компьютере. Другими словами, эти ссылки вызывают разные исполняемые файлы.

1 голос
/ 12 октября 2019
LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
<FilesMatch .php$>
    SetHandler application/x-httpd-php
</FilesMatch>

Ваша директива LoadModule в файле httpd.conf указывает на путь php71. Вы можете изменить это на путь php73. Кроме того, правильно установите обработчик:

SetHandler application/x-httpd-php73

Если у вас только одна версия php, то x-httpd-php будет работать. Перезапустите apache, чтобы убедиться, что загружены новые конфигурации.

Вам также может понадобиться выполнить дополнительную настройку, указанную ниже. Я не уверен, если это необходимо, но вы можете попробовать.

Если вы хотите форсировать веб-запрос к определенной версии PHP, у вас есть 2 варианта:

1. Изменения php.ini

В выводе php_info () вы увидите загруженный файл конфигурации - путь php.ini. Перейдите по этому пути и добавьте

AddHandler application/x-httpd-php73 .php

2. Добавьте следующие директивы в файл .htaccess вашего сайта.

Чтобы переключиться на PHP 7.3

AddHandler application/x-httpd-php73 .php

Чтобы переключиться на PHP 7.1

AddHandler application/x-httpd-php71 .php

Подробнее

PHP позволяет загружать несколько файлов php.ini с возможностью переопределения их в определенной папке.

Когда вы запускаете PHP-скрипт с phpinfo (), он загружаетближайший php.ini к этому файлу. Это может быть корневой уровень или любой другой файл php.ini, представленный в иерархии папок выше.

В то время как при запуске из терминала он запускает PHP по пути, зарегистрированному в переменной среды. Когда вы запускаете из терминала, я сомневаюсь, что конфигурация apache вступит в силу, поэтому изменение чего-либо в конфигурации apache не повлияет на выполнение терминала. Модуль Apache PHP и двоичный файл командной строки PHP - это две разные вещи, которые не мешают друг другу.


Если вы хотите заставить свой терминал использовать нужную версию, есть двапараметры

1. Измените переменную среды, чтобы запускать PHP в определенной версии

printenv PATH

Это будет путь к вашему PHP. Удалите это и поместите новый на

export PATH=/usr/local/php73/bin:$PATH 

2. Изменить псевдоним PHP

Вместо этого вы также можете использовать псевдоним. Добавьте следующее в ваш файл .bash_profile.

alias php='/usr/local/php73/bin/php'

Это работает так же, как экспорт PATH при добавлении в ваш файл .bash_profile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...