exec() 함수관련... 어떻게 해야 작동하나요?
본문
- 서버는 CentOS 7.2 (64bit)구요
- PHP버전은 PHP 7.0입니다.
<?php
exec('systemctl restart httpd');
?>
명령어 치는것도 귀찮아서 서버를 버튼클릭으로 재시작하게 할려고하는데...
exec가 안먹히네요?;; exec함수로 위 명령어 뿐만아니라 다안먹힙니다.
exec를 쓸일이없어서 안쓰다가...
구글링해보니깐
safe_mode = Off
safe_mode_exec_dir =
위와같이 php.ini에서 설정을 하라는데 아무리 찾아봐도 저 항목이 안보이길래 추가로 기입해줬습니다. 그런데 phpinfo()에 항목이 추가가 안됬더라구요...
혹시나해서 PHP 메뉴얼보니깐 6.0에서 safe_mode 보안관련 설정이 없어졌다고 나오고...
( http://php.net/manual/kr/ini.sect.safe-mode.php )
구글링을 좀 더 해보니 /bin/bash 권한문제(?) 라면서 bash를 755로 권한을 변경해달라고 나와있더라구요.
그래서 제 서버에는 bash가 /usr/bin/bash 여기에 있길래 권한을 바꿀려고하니 애초부터 디폴트값 755였고...usr bin 폴더마저 755였습니다.
혹시나해서 systemctl 권한도 봐보니깐 755였습니다.
http://php.net/manual/kr/function.exec.php 여기 보면 분명 PHP7 된다는것같은데 뭐가 문제일까요?
결론 : 어떻게해야 사용할 수 있는거죠?!!
SSL인증서와 도메인 지정할때의 귀차니즘을 덜어버리고싶네요!
!-->답변 1
권한문제로 보입니다
아파치가 nobody 계정으로 보통 실행되니
exec로 systemctl 명령어를 실행하면 nobody 계정이 해당 명령어를 실행할수 있는 권한이
있어야합니다 명령어 권한설정을 공부해 보시길 권장합니다