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
Чтобы иметь возможность эффективно менять версию 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
что заставило все снова работать нормально без перезапуска.