zoukankan      html  css  js  c++  java
  • 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 里面自动就好使了

  • 相关阅读:
    axios、ajax、fetch三者的区别
    React与Vue的相同与不同点
    react-redux
    redux【react】
    react高阶组件
    基于WebGL无插件虚拟场景漫游关键技术(完整版)ThingJS
    基于WebGL的三维交通监控可视化技术应用(实践版) ThingJS
    地下管线监控系统中互联网WebGL三维可视化构建技术 ThingJS
    基于WebGL实现智慧校园的全景漫游技术研究 三维可视化
    基于WebGL的3D可视化告警系统关键技术解析 ThingJS
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15452992.html
Copyright © 2011-2022 走看看