从脚本调用时使用了错误版本的 PHP

从脚本调用时使用了错误版本的 PHP

如果这个问题真的很基础,我提前道歉。我的背景是 Windows,我被要求维护一台状况不佳且正在生产中使用的 RedHat Linux 服务器。

问题是,从 Apache 中的脚本执行时与从命令行执行时,PHP 的版本不同。

例如:

从命令行:

在此处输入图片描述

从网页(Apache):

在此处输入图片描述

从网页调用的php脚本:

在此处输入图片描述

该脚本由以下 php 代码和函数调用:

$exec_result = sku_exec(CLIMPORT.FILE_NAV, '', $_POST['nav_skus']);

function sku_exec($file_path, $call, $args)
{
    $exe = $file_path.' ';
    if($call != '' && isset($call) && $call) $exe .= $call.' ';
    $exe .= $args;
//  echo $exe.'<hr />';
    exec('php '.$exe, $return_data);
    return $return_data;
}

我需要将脚本降级为使用 5.2.9 而不是 5.4.1。

我什至应该从哪里开始查找如何配置它?为什么 Apache 使用的 PHP 版本与从脚本调用的版本不同?

我查看了 Apache 的配置文件,但没有看到任何引人注目的东西。

有什么建议么?

不幸的是,目前无法将服务器升级到最新的 PHP。计划是构建一个新服务器并迁移到该服务器。

答案1

从 CLI运行which php并添加脚本路径,以便运行exec('/path/to/the/cli/php。如果您的用户受到如此限制以至于无法运行 which(那将严重混乱):运行命令行的用户具有不同的环境,因此与PATH用户所拥有的环境不同。PATH如果我没记错的话,这个变量虽然是很久以前的事了,但它甚至在 DOS 中也存在。因此,获取 PATH ( ) 中的值echo $PATH并手动检查哪个目录包含名为 的文件php。无论如何,这就是它的作用which

如果这是你的工作,你迫切需要阅读一些基本的 Linux 书籍。

相关内容