不允许操作

不允许操作

我在 OS X 上,我正在尝试为解释器编写一个接口,与解释器的通信在 PHP 中如下所示:

$f = fopen('mmascript.m', 'w');
fwrite($f, "#!/Applications/mma/Contents/MacOS/MathematicaScript -script\n");
fwrite($f, 'Print[100]');
fclose($f);
chmod('mmascript.m', 0777);
passthru('mmascript.m', $error);
echo $error;

它显示错误 127,“找不到命令”。如果我 cd 进入该文件夹并尝试运行该文件,我会收到错误消息

错误的解释器:不允许操作

如果我将其复制到另一个文件夹 fe cp ./mmascript.m ~/Desktop/mmascript.m,它最初可能会出现相同的问题,但随后会神奇地开始工作。由于解释器的路径是绝对的,这意味着该路径是正确的。有任何想法吗?

答案1

让我们添加一些调试信息,如下所示:

$f = fopen('mmascript.m', 'w');
echo "fopen complete."
fwrite($f, "#!/Applications/mma/Contents/MacOS/MathematicaScript -script\n");
echo "fwrite 1 complete."
fwrite($f, 'Print[100]');
echo "fwrite 2 complete.
fclose($f);
echo "close complete."
chmod('mmascript.m', 0777);
echo "Permissions Successfully Changed."
passthru('mmascript.m', $error);
echo "Passthru Complete."
echo $error;

我的直觉是 passthru 不会回显,因为 passthru 需要一个命令,后跟您的文件名。

相关内容