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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm安装三方库_pycharm无网络安装第三方库

    pycharm安装三方库_pycharm无网络安装第三方库系统:mac10.15.3软件:2019.3pycharm导入第三方库的方法是1先点击File>OtherSetting>PreferencesforNewProjects2点击红框中的小+3在红线位置搜索要加载的第三方库,然后点击箭头所指的installPackage安装模块,点击后按钮按钮为灰色,等恢复后NumPy模块就已经安装完成了,并且显示在列表中,…

  • 全景视频拼接关键技术

    全景视频拼接关键技术一、原理介绍图像拼接(ImageStitching)是一种利用实景图像组成全景空间的技术,它将多幅图像拼接成一幅大尺度图像或360度全景图,图像拼接技术涉及到计算机视觉、计算机图形学、数字图像处理以及一些数学工具等技术。图像拼接其基本步骤主要包括以下几个方面:摄相机的标定、传感器图像畸变校正、图像的投影变换、匹配点选取、全景图像拼接(融合),以及亮度与颜色的均衡处理等

  • js中clientWidth、scrollLeft、offsetX等宽高度和位置的用法

    js中clientWidth、scrollLeft、offsetX等宽高度和位置的用法文章目录前言一、clientWidth/clientHeight二、clientLeft/clientTop三、clientX/clientY四、scrollWidth/scrollHeight五、scrollLeft/scrollTop六、offsetWidth/offsetHeight七、offsetLeft/offsetTop八、offsetX/offsetY总结前言前端学习中会遇到的一些宽高度,位置的计算提示:以下是本篇文章正文内容,下面案例可供参考.b.

  • AppSettings和ConnectionStrings的使用。[通俗易懂]

    AppSettings和ConnectionStrings的使用。[通俗易懂]引用:http://www.cnblogs.com/mikemao/archive/2009/02/02/1382694.htmlAppSettings是ASP.NET1.1时期用的,在.NETFramework2.0中,新增了ConnectionStrings.1.ConnectionStrings的使用<connectionS…

  • iOS自动化之WDA(WebDriverAgent)安装

    iOS自动化之WDA(WebDriverAgent)安装1、WDA介绍WebDriverAgent在iOS端实现了一个WebDriverserver,借助这个server我们可以远程控制iOS设备。你可以启动、杀死应用,点击、滚动视图

  • supervisor 进程管理

    supervisor 进程管理supervisor 进程管理

发表回复

您的电子邮箱地址不会被公开。

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