在PHP运行时定义Stata路径

问题描述 投票:0回答:1

我们的应用程序在不同的环境下通过PHP运行Stata CLI,但我们很难确定不同环境下的可执行文件的路径。

在Mac上使用 stata-mp 工作,而在另一台Mac上,我们必须使用 /usr/local/bin/stata-mp;而在Linux机器上,我们需要 /usr/local/stata/stata-mp.只是以前的Linux环境和Mac不同,但现在不知为什么,我们搞不清楚也是Mac的不同。奇怪的是,在TerminalShell上 stata-mp 仍然适用于Mac和Linux服务器...。

这基本上是我们用来执行Stata脚本的PHP代码。

$return = exec(static::STATA . " -e do script.do ", $output, $result);

我们如何在运行时正确定义Stata路径?

使用Stata MP v16.1

php command-line-interface stata
1个回答
0
投票

通常是与您的 $PATH 变量。

试着这样做。

$ php -a
$ var_dump($GLOBALS);

这将输出你的 $GLOBALS 的环境。所以你需要找到一行这样的配置。

["PATH"]=>
      string(168) "/home/william/.nvm/versions/node/v14.2.0/bin:/home/william/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

这个配置将显示你的 php-cli 将搜索执行你的命令。

现在,尝试搜索您的 stata-mp 是用这个命令定位的。

whereis vim

并检查你的 PATH 包含你的命令的路径。如果不包含,你可以把你的 .bashrc 到你的脚本理解的下一个文件读取,或者,你可以设置在你的脚本调用。(这取决于你的shell,但是,在Mac中,你可以查看 此处 关于 PATH 环境

© www.soinside.com 2019 - 2024. All rights reserved.