Scilab을 php의 exec로 실행할 때 시간 절약

아주 간단한 것인데 조금 시간을 낭비했습니다. 

PHP에서 외부 프로그램을 실행하는 방법이 여러 가지가 있는데, shell_exec를 이용 중입니다. 

다른 프로그램은 무난히 실행하고 있었는데, 유독 Scilab은 잘 안되는 것 같더군요. 아파치의 에러 로그를 나중에야 보고 무엇이 문제인지 알았습니다. 

[PC에서는 full path를 지정해 줄 때 공백 문자가 있으면 안되었음]
  • 보통 PC에서는 C:\Program Files\scilab-5-3-3\bin 와 같은 폴더에서 시작하는데, shell_exec에 scilex.exe의 full path를 써주었더니 공백 문자를 처리하지 못하면서 실행이 안되었던 것이었습니다. 
  • 윈도우의 고급 설정에서 PATH 환경 변수에 scilex.exe가 있는 패스를 추가로 지정해 주면 되는 것이겠지요.
  • 만약 굳이 full path를 지정하여 공백 문자를 넣고 싶다면, 다음 줄 처럼 배치 파일(.bat)을 하나 더 만들어서, shell_exec에서 .bat를 실행하도록 처리하면 되겠습니다. 
  • "C:\Program Files\scilab-5-3-3\bin\scilex.exe" -nb -f c:\var\www\temp\reconstruction.sci 
[linux에서는 $SCIHOME 환경 변수가 없으면 안되었음]
  • 역시나 로그를 살펴보니까, $SCIHOME이 미지정이라고 하더군요. /etc/profile등에 지정하면 되겠지만, 실행 중 명시를 하고 싶다면, 다른 방법도 있겠지만 .sh 파일을 하나 만들어서 처리해도 되겠습니다. 
  • #!/bin/sh
  • export $SCIHOME /home/root/.Scilab/scilab-5-2-2
  • /usr/bin/scilab-cli -nb -f /var/www/temp/reconstruction.sci


덧글

댓글 입력 영역