您的位置 首页 php

在 macOS 下使用 PHP-version 切换 PHP 版本

本地环境是和公司项目环境保持一致的 7.1,可是 laravel6.0 升级必须要求 7.2,(组内有小伙伴的本地环境是 7.2,然后 push 代码之后导致项目 dev 环境无法自动部署),想了想,还是得在本地弄一个方便切换 php 版本的东西。

方法一:安装 php-version(如果没有用 valet,这个应该是可以的)

step 1、使用 brew 安装多个 php 版本

brew install php71 // 原本有就不需要brew install php72

step 2、发现 brew 安转 php-version 的命令失效了,那就手动安装吧

[qian@bogon ~ ]$ mkdir $HOME/.local[qian@bogon ~ ]$ cd $HOME/.local[qian@bogon .local ]$ git clone https://github.com/wilmoore/php-version.git[qian@bogon .local ]$ source $HOME/.local/php-version/php-version.sh//测试  查看当前php版本[qian@bogon .local ]$ php-version* 7.1.18 7.2.22

现在添加环境变量

[qian@bogon ~ ]$ echo "source $HOME/.local/php-version/php-version.sh" >> ~/.zshrc[qian@bogon ~ ]$ source ~/.zshrc

切换 php 版本

php-version 7.1

php-version 7.2

这样使用命令行敲 php -v 已经是切换后的版本。

方法二、 使用 valet use php@version (使用 valet 搭环境的小伙伴看这里)

这个其实是属于我看文档不仔细 – -,以前只大致学了 valet 的基本使用 – -,如果看文档仔细点,就能少花这小半天时间了 – –

Valet 允许你使用 valet use php@version 命令来切换 PHP 版本。如果指定版本尚未安装,Valet 将通过 Brew 来安装指定的 PHP 版本:

valet use php@7.2valet use php

但是这个必须是 valet 新版本,要先升级,否则会报错,如下

[qian@bogon ~ ]$ valet use php@7.2  Command "use" is not defined.

valet 的升级:

你可以在终端使用 composer global update 命令来更新 Valet。升级后,如有需要,最好 (实践发现,是必须) 再次运行 valet install ,以便 Valet 对配置文件进行升级。

composer global updatevalet install

然后,就 ok 了 valet use php@7.2

[qian@bogon ~ ]$ valet use php@7.2Stopping php@7.1...Unlinking current version: php@7.1Linking new version: php@7.2Updating PHP configuration...Restarting php@7.2...Restarting nginx...Valet is now using php@7.2.

踩坑记录

一、第一遍使用 brew 安装 php72 权限不够创建 Frameworks 目录

执行第一遍的时候报错

==> Pouring python-3.7.4_1.mojave.bottle.tar.gzError: An unexpected error occurred during the `brew link` stepThe formula built, but is not symlinked into /usr/localPermission denied @ dir_s_mkdir - /usr/local/FrameworksError: Permission denied @ dir_s_mkdir - /usr/local/Frameworks

然后自己去 /usr/local/ 下新建了目录 Frameworks,再执行一遍 brew install php72 即可

二、使用 brew 安装 php-version 工具,命令失效

brew install php-version

给出了报错

[qian@bogon ~ ]$ brew install php-versionUpdating Homebrew...==> Auto-updated Homebrew!Updated 1 tap (homebrew/core).==> Updated Formulaeatomist-cli                              webtorrent-cliError: No available formula with the name "php-version"==> Searching for a previously deleted formula (in the last month)...Warning: homebrew/core is shallow clone. To get complete history run:  git -C "$(brew --repo homebrew/core)" fetch --unshallowError: No previously deleted formula found.==> Searching for similarly named formulae...Error: No similarly named formulae found.==> Searching taps...==> Searching taps on GitHub...Error: No formulae found in taps.

它说没有这个叫 “php-version” 的东西,我还把 “homebrew/core” 给拉了一下

git -C "$(brew –repo homebrew/core)" fetch –unshallow

三、执行 php -v 时报 dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.61.dylib

[qian@bogon ~ ]$ php -vdyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.61.dylib  Referenced from: /usr/local/bin/php  Reason: image not found[1]    66728 abort      php -v

反正我是重装大法好

brew uninstall --force php71 && brew install php71

四、php-version 在 valet 环境中不起作用

如果没有用 valet 的小伙伴,下面就不用看了~

如上方法一,php-version 装好啦,php -v 也对着

但是。。。。不管使用 sudo pkill -INT -o php-fpm 还是 sudo kill -9 进程id,

都不能杀死 php-fpm 进程,使用 ps -ef | grep php 查看进程:

[qian@bogon ~ ]$ ps -ef |grep php  501   307     1   0 四09上午 ??        51:34.33 /Applications/PhpStorm.app/Contents/MacOS/phpstorm -psn_0_90134    0 70900     1   0  2:33下午 ??         0:00.11 /usr/local/opt/php@7.1/sbin/php-fpm --nodaemonize  501 70901 70900   0  2:33下午 ??         0:00.00 /usr/local/opt/php@7.1/sbin/php-fpm --nodaemonize  501 70902 70900   0  2:33下午 ??         0:00.00 /usr/local/opt/php@7.1/sbin/php-fpm --nodaemonize  501 70904 10409   0  2:33下午 ttys007    0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn php

代码中打印 phpinfo (); 依然是切换之前的 php 版本,得查找原因另想办法

使用 sudo php-fpm 命令,发现报错中和 valet 相关

[qian@bogon ~ ]$ sudo php-fpm && php -vPassword:[16-Sep-2019 18:27:08] ERROR: An another FPM instance seems to already listen on /Users/qian/.config/valet/valet.sock[16-Sep-2019 18:27:08] ERROR: FPM initialization failed[qian@bogon ~ ]$

然后去翻文档,valet 怎么切换 php 版本,然后找到啦!

以上就是在 macOS 下使用 PHP-version 切换 PHP 版本的详细内容,更多请关注求知技术网其它相关文章!

文章来源:智云一二三科技

文章标题:在 macOS 下使用 PHP-version 切换 PHP 版本

文章地址:https://www.zhihuclub.com/3340.shtml

关于作者: 智云科技

热门文章

评论已关闭

2条评论

  1. Excellent blog here! Also your website loads up very
    fast! What host are you using? Can I get your affiliate link to your host?
    I wish my site loaded up as quickly as yours lol

  2. Each and every gambling selection that you can play at
    BetOnline has its personal welcome present.

    Stop by my blog post;

网站地图