Не удается обновить версию php на macOS Catalina

#php #laravel

#php #laravel

Вопрос:

У меня очень раздражающая проблема. У меня есть 2 версии PHP на macOS Catalina, и что бы я ни делал, я, похоже, не могу избавиться от старой версии (php 7.3.x). Я не могу ничего изменить в / usr / bin / на моем Mac, хотя я пользователь с правами администратора.

2 версии PHP являются:

 $ /usr/bin/php -v
PHP 7.3.11 (cli) (built: Apr 17 2020 19:14:14) ( NTS )
  
 $ /usr/local/bin/php -v
PHP 7.4.9 (cli) (built: Aug  7 2020 19:23:06) ( NTS )
  

Даже несмотря на то, что which php и php -v используют 7.4:

 $ which php
/usr/local/bin/php
  
 $ php -v
PHP 7.4.9 (cli) (built: Aug  7 2020 19:23:06) ( NTS )
  

Проблема в том, что когда выполняется мое задание cron, оно использует /usr /bin / php (версия 7.3.x), что приводит к сбою моего задания cron (оказывается, некоторый код пакета Laravel — в частности, Mailcoach — не совместим с php 7.3. * и НУЖДАЕТСЯ В php версии 7.4 или выше.

Вот как выглядит моя переменная PATH:

 $ echo $PATH
/usr/local/bin/php:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:./vendor/bin:/usr/local/sbin:/Users/kunalpunjabi/.composer/vendor/bin:/usr/local/mysql/bin:/usr/local/bin/mysql
  

Если вы сталкивались с этим раньше или знаете, как это исправить, пожалуйста, помогите!

Комментарии:

1. Не могли бы вы, пожалуйста, проверить свои настройки для schedule:run cronjob и посмотреть, настроен ли он на использование /usr/local/bin/php вместо /usr/bin/php ? Лично я всегда использую виртуальную машину, такую как Docker, поэтому у меня есть полный контроль над моей средой разработки. Если что-то в моей ОС изменится, у меня не будет проблем с зависимостями, версиями и т.д.

2. @GlennM с * * * * * cd /scheduler_crons amp;amp; /usr/local/bin/php artisan schedule:run это работает нормально, но мне нужно обновить / usr / bin / php. вот о чем этот вопрос….. Мне нужно, чтобы этот crontab также работал: * * * * * cd /scheduler_crons amp;amp; php artisan schedule:run , чего он не делает из-за неправильной версии php

Ответ №1:

Вы установили их через homebrew?

Если это так, попробуйте связать php7.4

Сначала посмотрите, какой php работает в данный момент.

 brew services list
  

Затем остановитесь и отключите эту версию с

 brew services stop {PHP}
brew unlink {PHP}
  

Затем свяжите правильную версию

 brew link --force --overwrite php@7.4
brew services start php@7.4
  

Не могли бы вы попробовать это?

Если это не работает, не могли бы вы загрузить скриншот вашего «списка служб brew»

Комментарии:

1. Я только что попробовал эти шаги, и это не помогло. Проблема не в основной версии php, установленной с brew, которая всегда показывала 7.4.9. Проблема в том, что версия, используемая cron, — это / usr / bin / php, которая является версией 7.3 — это версия, от которой мне нужно избавиться. Также смотрите: $ brew services list Name Status User Plist mysql started kp123 /Users/kp123/Library/LaunchAgents/homebrew.mxcl.mysql.plist php started kp123 /Users/kp123/Library/LaunchAgents/homebrew.mxcl.php.plist