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 里面自动就好使了

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

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

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


相关推荐

  • 巧设IP路由 实现不同网段互通[通俗易懂]

    巧设IP路由 实现不同网段互通[通俗易懂]【简介】当一个局域网中必须存在两个以上网段时,分属于不同网段内的主机彼此互不可见。为了解决这个问题,就必须在不同的网段之间设置路由器。如果花费上万元资金购买一台路由器,仅仅用于连接局域网中的两个网段,实在不值得。有什么好的解决方案吗?当然有,这就是Windows中的IP路由。  当一个局域网中必须存在两个以上网段时,分属于不同网段内的主机彼此互不可见。为了解决这个问题,就必须在不同的网段之间设置…

    2025年10月31日
    2
  • python创建线程池_python爬虫多线程和多进程

    python创建线程池_python爬虫多线程和多进程importthreadingfromconcurrent.futures.threadimportThreadPoolExecutorlock=threading.Lock()deffunc(x,y):”””打印x次y”””globallockforiinrange(x):withlock:print(y)#线程池最大线程数3withThreadPool

    2022年10月1日
    3
  • java 网页提示被阻止怎么办,应用程序已被java安全阻止怎么办

    java 网页提示被阻止怎么办,应用程序已被java安全阻止怎么办我们经常会通过浏览器来浏览各种网页,然而有时候会遇到各种提示,例如就有不少具体步骤如下:1、完成JAVA版本更新,然后刷新有问题的网页页面,以排除JAVA版本问题引起JAVA安全阻止;2、从开始菜单中打开控制面板,我们需要进入控制面板来修改相应的配置;3、进入控制面板后,在控制面板中找到JAVA选项,如果找不到可将查看方式切换到大图标或图标即可;4、在JAVA控制面板中打开安全选项,并找到例外站点…

    2022年7月9日
    20
  • SpringBoot跨域的几种解决方案

    SpringBoot跨域的几种解决方案SpringBoot跨域请求处理方式方法一、SpringBoot的注解@CrossOrigin(也支持SpringMVC)简单粗暴的方式,Controller层在需要跨域的类或者方法上加上该注解即可@RestController@CrossOrigin@RequestMapping(“/situation”)publicclassSituationControllerextendsPublicUtilController{@AutowiredprivateSit

    2022年6月16日
    30
  • MATLAB 安装包「建议收藏」

    MATLAB 安装包「建议收藏」呃,想说的话看栏目简介。我只有三种MATLAB,MATLAB2014a,2018b,2019a,是上学时学风电和现控时用的,这玩意还是越新版本的越好,个人对MATLAB是又爱又恨,,,链接:https://pan.baidu.com/s/1CTDfWmuefLcKW8hW5-569w提取码:xtmd…

    2022年6月8日
    33
  • 周鸿祎说腾讯_周鸿祎的3Q

    周鸿祎说腾讯_周鸿祎的3Q6月10日老杳吧的一个手机厂商聚会上,奇虎360董事长周鸿祎有一段很有意思的发言。他用充满煽动性的语言对手机厂商们描述了市场环境、分析了自己的“敌人”小米科技和整个互联网的“敌人”腾讯,并极力为自己的360手机合作平台招徕伙伴。他对在场的手机和相关硬件生产商说,“现在所有的互联网公司在琢磨怎么做手机的同时,我觉得手机公司应该琢磨自己怎么转型。” 酷派、中兴、华为一年出多少手机,这个量比小米

    2022年9月2日
    7

发表回复

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

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