【问题标题】:I'm getting php5.5 instead php7 when I run exec(php -v) in php script当我在 php 脚本中运行 exec(php -v) 时,我得到的是 php5.5 而不是 php7
【发布时间】:2017-04-05 07:46:31
【问题描述】:

当我在 cli 中运行 php -v 时,我得到了确切的 php 版本 7,但是当我在 Web 服务器中运行 exec("php -v") 时,我得到 php 5.5,甚至在 phpinfo 中我看到我正在运行 php 7 ?!知道为什么我会使用旧版本的 PHP 吗?

【问题讨论】:

    标签: php macports


    【解决方案1】:

    运行 exec 你会得到 PHP 的 CLI 版本 您可能将 php5.5 安装为 CLI 并将 php7 安装为 apache 模块

    【讨论】:

    • 当我在终端上查看我的 php -v 我可以看到我的 php 版本是 PHP7
    • 在你的脚本和命令行中运行which php。此外,为您的 apache 用户配置的 php(即:www-data)可能与用户的 php cli 不同
    • 它显示了我的 php 所在的路径 /local/bin/php
    • 两者都显示完全相同的 php 路径?我认为这是不可能的:如果您有 2 个并发版本的 php,它们必须位于不同的位置
    • 当我运行 whereis php 它显示两个相同的位置。我不知道是什么原因导致我没有在 php 脚本中得到结果
    【解决方案2】:

    如果您使用 CentO,请将此行添加到 /etc/bashrc 的末尾(或 ~/.profile 对于 Ubuntu)

     export PATH=$PATH:/your/path/to/php7/bin
    

    然后运行: source /etc/bashrc

    P/s 如果你编辑/etc/profile.d 可能会更好。看看他们俩。

    更新

    在 MacOS 中,让编辑 ~/.bash_profile(如果它不存在,则创建它)具有相同的内容。

    【讨论】:

    • 为什么用这个?当我在命令行中运行 php -v 时,我得到了 php 7 版本,只是当我在 symfony 项目的控制器上运行 exec("php -v") 时,我得到了错误的 php 版本(php 5.5)。
    • 这是环境路径。您必须声明 PATH 以便操作系统知道在哪里可以找到并运行已执行的文件。当您运行php -v 时,将运行cli 版本,而不是php web 服务器进程。所以,让操作系统指向 php bin dir
    • 我正在使用 CentOS。抱歉,我是使用 CentOS 的新手,在哪里可以找到执行此命令的路径?
    • 尝试which phpwhereis php或创建info.php,其中包含“”。把它放在你的 web 根目录下,访问 localhost/info.php 并在那里查找路径。也许您会在配置参数中找到或进一步...
    • 我能找到 php exe 文件的路径,但找不到 ~/.bashrc 是否有可能它没有,我必须创建它?
    猜你喜欢
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 2017-09-28
    • 2017-02-05
    • 2011-04-21
    • 2014-04-29
    • 2015-02-23
    • 1970-01-01
    相关资源
    最近更新 更多