如果这个问题真的很基本,我会提前道歉。 我的背景是在Windows中,我被要求维护一个状态不好,正在使用的RedHat Linux服务器。
问题是PHP的版本在从Apache的脚本执行时与命令行不同。
例如:
从命令行:

从网页(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。
我甚至从哪里开始寻找如何configuration? 为什么Apache正在使用的PHP版本与它从脚本调用的版本不同?
我看着Apache的configuration文件,但没有看到任何跳出我的东西。
有什么build议么?
不幸的是,现在不能将服务器升级到最新的PHP。 计划是build立一个新的服务器并迁移到它。
从CLI运行which php ,并将path添加到脚本中,以便运行exec('/path/to/the/cli/php 。如果用户受限制,无法运行哪个搞砸了):运行命令行的用户有一个不同的环境,所以有一个不同的PATH PATHvariables,如果我没有记错,虽然很久以前,甚至在DOS下也是存在的,所以把PATH中的值( echo $PATH ),并手动检查哪个目录包含一个名为php的文件,反正是这样。
如果现在是你的工作,你很需要阅读一些基本的Linux书籍。