PHPInfo / Valet - две разные версии PHP

Хорошо, поэтому я испытываю что-то довольно странное. мой phpinfo() пока показывает одну версию php -v показывает другое.

Я бегу локально на MacBook Air (Мохаве) с Ларавелем и Валетом.

phpinfo():

PHP Version 7.2.13

Configuration File (php.ini) Path   /usr/local/etc/php/7.2
Loaded Configuration File   /usr/local/etc/php/7.2/php.ini
Scan this dir for additional .ini files /usr/local/etc/php/7.2/conf.d

Находясь в моем терминале, он показывает:

php -v

PHP 7.3.0 (cli) (built: Dec  7 2018 11:00:11) ( NTS )

Теперь, если я сделаю which php Я получаю это:

/usr/local/bin/php

В моем ~/.bash-profile, У меня есть это:

export "PATH=~/.composer/vendor/bin:$PATH"

Я пытался:

  • Перезапустите Nginx
  • Перезагрузка Валет

  • Отключите PHP@7.2 и ссылку PHP@7.3 с Homebrew:

    Olivers-MacBook-Air: ~ oliverbusk $ brew unlink php@7.2 Ошибка: нет такого бочонка: /usr/local/Cellar/php@7.2

Как я могу заставить мой настоящий сайт камердинера использовать php@7.3?

11 ответов

Решение

Такое простое решение, как перезагрузка моего Macbook, решило эту проблему. После перезагрузки правильная версия 7.3 показал в моем phpinfo();

Ниже у меня сработало простое исправление.

rm ~/.config/valet/valet.sock
valet restart 

В моем случае это сработало после принудительной установки конкретной версии PHP:

      valet use php@7.4 --force

Хорошие новости, пожалуйста, обновите до последней версии камердинера, вы можете легко переключить версию php. Источник: https://laravel.com/docs/5.8/valet

Версии PHP

Valet позволяет переключать версии PHP с помощью команды valet use php@version. Valet установит указанную версию PHP через Brew, если она еще не установлена:

valet use php@7.2

valet use php   //without any specification, it will be using latest version

Из MacBook Pro (Mojave) с Laravel и Valet:

valet use php@7.2

Чтобы иметь возможность эффективно менять версию php на моей машине, я использую следующий скрипт:

Добавьте к вашему пользователю .bash_profile
Затем используйте следующую команду для переключения

переключатель-php7.x

      switch-php() {
  valet stop
  brew unlink php@7.2 php@7.3 php@7.4
  brew link --force --overwrite php@$1
  brew services restart php@$1
  composer global update
  rm -f ~/.config/valet/valet.sock
  valet install
}

https://gist.github.com/r1tt3r/e0f199eb274d5ff186b73956af594316

Я использую linux valet на Ubuntu 20.04 , у меня работает следующая команда

      valet use 8.0

Здесь 8.0 относится к версии php.

NB: протестировано это решение на рабочем столе Ubuntu 20.04 .

Если вы используете Valet Linux Plus(имеет больше возможностей, чем Valet Linux), просто выполните valet use {your PHP version} --update-cli. Например, чтобы использовать php8.0, просто запустите:

      valet use 8.0 --update-cli

Это обновит как версию php-fpm, так и версию php-cli.

В основном, php valet использует и тот, который используется вашим MacBook, отличается. Но, как уже упоминалось @Shiro и @Israel Alexis Palma Quezada, в более новых версияхvalet use php73решит вашу проблему. Если не работает, попробуйте запуститьcomposer global update для обновления ваших глобальных пакетов, таким образом обновляя камердинера

Чтобы обновить версию php для Mac, запустите:

export PATH="your/path/to/php@7.3/bin:$PATH"
export PATH="your/path/to/php@7.3/sbin:$PATH"

или просто добавьте эти две строки в свой ~/.profile или ~/.bash_profile

Не забывай бежать source ~/.profile или source ~/.bash_profile или любой другой файл, который вы выбрали для редактирования.

Вчера я столкнулся с той же проблемой на Ubuntu 18.

Сначала я изменил версию PHP:

$ sudo a2dismod php7.2
$ sudo a2enmod php7.3
$ sudo update-alternatives --set php /usr/bin/7.3

Но камердинер все еще показывал неверную версию PHP. Перезагрузка не сработала. По факту, phpinfo() отображал PHP 7.1.

После запуска ps -aux | grep php Я заметил несколько случаев php-fpm (5.6, 7.1 и 7.2) работает.

Я остановил их

$ sudo service php5.6-fpm stop
$ sudo service php7.1-fpm stop
$ sudo service php7.2-fpm stop

Потом началось 7.3

$ sudo service php7.3-fpm start

А теперь мой phpinfo() отобразить правильную версию PHP

Я столкнулся с этой же проблемой сегодня при использовании valet plus. Когда я переключал версии PHP, в моем браузере отображалась предыдущая, а в терминале - правильная. Глядя на мой список услуг по пивоварению:

brew services list

Он показал, что одной из служб valet-php (valet-php@7.2) нет в списке служб, но каким-то образом мой камердинер смог переключиться на нее. Valet не установил этот PHP должным образом, и это было причиной проблемы. Я сделал следующее, чтобы удалить этот PHP и переустановить его с помощью brew.

brew uninstall valet-php@7.2
sudo rm -rf /usr/local/Cellar/valet-php@7.2/7.2.34_1
brew install valet-php@7.2

Версия PHP, которая раньше не отображалась в списке сервисов пивоварения, теперь была показана, и я смог "остановить" службу этой версии PHP:

brew services stop valet-php@7.2 

что заставило все снова работать нормально без перезапуска.

Другие вопросы по тегам