我们的应用程序通过PHP在不同的环境中运行Stata CLI,但是我们很难在不同的环境中确定可执行文件的路径。
在使用stata-mp的Mac上,我们必须使用/usr/local/bin/stata-mp;在Linux机器上,我们需要/usr/local/stata/stata-mp。过去只有Linux环境与Mac不同,但现在由于某些原因,我们无法弄清楚Mac也是不同的。奇怪的是,在终端/外壳stata-mp上仍然可以同时在Mac和Linux服务器上工作。
这实际上是我们用来执行Stata脚本的PHP代码:
$return = exec(static::STATA . " -e do script.do ", $output, $result);我们如何在运行时正确定义Stata路径?
使用Stata MP v16.1
发布于 2020-06-10 07:35:07
通常与您的$PATH变量相关联。
尝试这样做:
$ php -a
$ var_dump($GLOBALS);这将在shell上输出您的$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环境的here。
https://stackoverflow.com/questions/62293459
复制相似问题