nodejs 웹서버에서 PHP 외부실행이 안될때
php의 shell_exec 같은 외부실행 함수를 통해서 nodejs 실행해야 되는데 안되는 경우에 대한 것입니다.
어떻게 설치가 되었느냐에 따라 다른것인데요.
리눅스 쉘에선 잘 되는데 웹서버를 통해서 실행할때 안되면 대부분 권한 문제 입니다. 즉, 실행할 수 있는 권한에 먼저 문제가 없는지 확인해봐야 합니다.
전에 한번 고생하고 또 이런일이 있는데요.
nvm 설치로 node가 /root/ 같은 홈디렉토리 하위에 있으면 그렇습니다.
이런 경우는 웹서버 실행시 writeFileSync 결과 파일이 생성이 안되는 경우 체크 해 보면 됩니다.
아래의 경우는 문제 되지 않습니다. 접근하는 디렉토리 권한 부터 살펴 보면 됩니다.
# ll /usr/local/nodejs/bin/node
/usr/local/nodejs/bin/node
# whereis node - 이런 위치가 있는 경우가 권한 문제가 발생 합니다.
node: /root/.nvm/versions/node/v16.15.1/bin/node