我们的应用程序在不同的环境下通过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
通常是与您的 $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
环境