저는 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가 이를 반영하지 않는다는 것입니다.