解决Php控制台和phpinfo版本号不一致问题

解决Php控制台和phpinfo版本号不一致问题

大家好,又见面了,我是全栈君。

本来是那 Sublime Text 3 跑几个例子, 结果安装一个格式化插件 phpfmt 之后保存时总提示当前的PHP版本过低, 要你升级, 想着升级就升级呗, 于是就被带进坑里去了…

PHP升级

Mac好像是自带了PHP了, 版本号查询: php -v

# 查询php版本号
$ php -v
PHP 5.5.38 (cli) (built: Oct 29 2017 20:49:07)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

PHP5 和 PHP7 是两个差别很大的版本, 其中不同自行网上查找

说是升级, 其实是重新安装一个, 源码安装就麻烦一点, 这里有个简单点的:

# 安装PHP7, 最后是大的版本号
curl -s http://php-osx.liip.ch/install.sh | bash -s 7.2

最后安装的目录是: /usr/local/php5-7.2.2-20180201-132629
额~~, 好吧, 为什么是 php5-7.2.2 这个样子…

而且安装完之后, 应该是有个 /usr/local/php5 的链接指向了 /usr/local/php5-7.2.2-20180201-132629 猜测是PHP好多地方应该都是指向的 /usr/local/php5 目录

$ ll /usr/local/
drwxr-xr-x   15 root        wheel   510B  4 12 19:31 php5-7.2.2-20180201-132629
lrwxr-xr-x    1 xuyinglong  wheel    37B  4 12 18:48 php5 -> /usr/local/php5-7.2.2-20180201-132629
# 查看安装后的版本号
$ /usr/local/php5-7.2.2-20180201-132629/bin/php -v
PHP 7.2.2 (cli) (built: Feb  1 2018 13:23:34) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.2, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans

看起来没问题, 然后再来个偷梁换柱, 把 /usr/bin/php 替换成我们最新的

# 查找位置
$ whereis php
/usr/bin/php


# 先备份
$ sudo /usr/bin/php /usr/bin/php5.5


# 创建一个链接, 类似window下面的快捷方式
$ sudo ln -s /usr/local/php5-7.2.2-20180201-132629/bin/php /usr/bin/php

然后 php -v 就可以看到是 7.2.2 版本了

跑个PHP例子

经典的当然是:test.php

<?php phpinfo(); ?>

额, 话说直接可是跑不起来的, 把这段配置到 nginx 里, 然后重启 sudo nginx -s reload

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /$document_root$fastcgi_script_name;
    include        fastcgi_params;
}

上面的 test.php 放到 nginx 安装目录下的 html 文件夹下, 然后浏览器里访问:
http://localhost/test.php 如果幸运的话, 你就能看到 PHP 相关的版本和配置等信息了

等等, 是不是忘记启动 php-fpm 了, 现在的 PHP 都是带 php-fpm 的 (PHP5.3.3之后自带改模块了), 额, 这是个什么, 你还是看文末的参考吧

直接执行 php-fpm 好像是提示没有配置文件吧, 而 /etc 和 /private/etc 目录下都有 php-fpm.conf 文件, 那么就指定一个吧

$ php-fpm --fpm-config /private/etc/php-fpm.conf

额, 继续报错, 提示 /usr/var/log/php-fpm.log 目录不存在, 好吧, 这里修改一下路径

$ vim /private/etc/php-fpm.conf


# 修改错误日志文件路径, 目录不存在可以手动创建一下 mkdir -p /usr/local/log
error_log = /usr/local/log/php-fpm.log

好, 再次运行就成功了

于是我们再次刷新浏览器的 http://localhost/test.php 链接, 可以看到PHP相关的额信息, 可是版本号和控制台的不对啊…

控制台和Web端版本号不一致

额, 这个问题网上查了好多资料… 最终还是老外靠谱 大致内容:

php -v – 控制台命令, 表示php的版本号

phpinfo() – 这个是通过Web服务器查看到的PHP信息

重点 – Web服务器是通过 php-fpm 关联到php的, 而 php-fpm 指向的 php 才是页面展示的信息; 而 php 和 php-fpm 总是一对一的, 自己版本找自己对应的搭档就好了

上面是看人家讨论 Apache 的 php5_module 模块按不同 php 版本来对应配置所想到的

解决方案

搞明白怎么回事就好解决问题了, 来看看:

$ php-fpm -v
PHP 5.5.38 (fpm-fcgi) (built: Oct 29 2017 20:49:27)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

在把 php-fpm 给换成最新的

# 查找位置
$ whereis php-fpm
/usr/sbin/php-fpm


# 备份
$ sudo mv /usr/sbin/php-fpm /usr/sbin/php-fpm5.5


# 创建一个链接
$ sudo ln -s /usr/local/php5-7.2.2-20180201-132629/sbin/php-fpm /usr/sbin/php-fpm

再次执行 php-fpm -v 可以看到是最新的 7.2.2 版本的了, 浏览器刷新应该可以看到都是最新的 7.2.2 版本的了

(忘记是否需要重启nginx了)

后话

nginx: 记住 php -v 和 php-fpm -v 应该是一对的, 要换应该一起换

apache: 同样, 如果安装了多个版本的php, 那么 php5_module 模块也需要对应

最后 Sublime Text 3 里面自动就好使了

解决Php控制台和phpinfo版本号不一致问题

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111952.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vmware 15 激活码【2022最新】

    (vmware 15 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年4月1日
    138
  • 用西尔特编程器解密芯片_配方法解一元二次方程

    用西尔特编程器解密芯片_配方法解一元二次方程z3-solver是由MicrosoftResearch(微软)开发的SMT求解器,它用于检查逻辑表达式的可满足性,可以找到一组约束中的其中一个可行解,缺点是无法找出所有的可行解(对于规划求解问题可以是scipy)。z3-solver可应用于软/硬件的验证与测试、约束求解、混合系统的分析、安全、生物,以及几何求解等问题。Z3主要由C++开发,提供了.NET、C、C++、Java、Python等语言调用接口,下面以python接口展开讲解。……

    2022年10月13日
    2
  • GridView 控件详细介绍

    GridView 控件详细介绍br GridView 控件详细介绍收藏 br 显示表格数据是软件开发中的一个周期性任务 ASP NET 提供了许多工具来在网格中显示表格数据 例如 GridView 控件 通过使用 GridView 控件 您可以显示 编辑和删除多种不同的数据源 例如数据库 XML 文件和公开数据的业务对象 中的数据 br br 1 GridView 数据绑定基础 br nbsp nbsp nbsp GridView 大部份场合下都是用来绑定数据源 进行数据的显示 一般情况下 可以绑定到 SqlDataSourc 控

    2025年6月15日
    2
  • mysql autoconf_autoconf手册(一)

    mysql autoconf_autoconf手册(一)AutoconfCreatingAutomaticConfigurationScriptsEdition2.13,forAutoconfversion2.13December1998byDavidMacKenzieandBenElliston—————————————————————–…

    2022年6月4日
    36
  • 理解Go语言的nil[通俗易懂]

    理解Go语言的nil[通俗易懂]   转载地址:https://studygolang.com/articles/9506   最近在油管上面看了一个视频:Understandingnil,挺有意思,这篇文章就对视频做一个归纳总结,代码示例都是来自于视频。nil是什么相信写过Golang的程序员对下面一段代码是非常非常熟悉的了:iferr!=nil{//dosomething…

    2025年5月26日
    3
  • C#开发面试题_程序员面试题精选100题

    C#开发面试题_程序员面试题精选100题注明:经过本人面试的经历和在网上的资料整理出来的100道比较常见的C#面试题,想当初面试公司虽然不是很多,第一次找工作用了近两周的时间面试了二十多家公司,成功的不到十家,最后选择了一家大型的软件公司干了两个月就走人了。后来又找了一周工作,面试了十一家公司,成功9家。现在已经在公司工作了快两年的时间了。以下的面试题也是自己曾经做过的,希望能帮助更多的同行找到满意的工作!!!1..NET和C#有

    2022年8月25日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号