현재 진행중인 방법은 PHP exec를 사용하는 것입니다.
<?php
$filename = "log.txt";
$text = $_POST['form'];
$fp = fopen ($filename, "w");
if ($fp) {
fwrite ($fp, $text);
fclose ($fp);
exec('/var/www/html/bash.sh');
header('Location: /next.html');
}
else {
echo ("ERROR.");
}
?>
그래서 스크립트가 log.txt에 잘 작성되기 때문에 적어도 스크립트가 실행되고 있음을 알고 있지만 bash.sh에서 아무것도 볼 수없는 것은 실제로 실행 중입니다. 내가 실행하면 명령 줄에
“exec sudo bash /full/path/bash.sh”
그런 다음 잘 실행합니다. 이것이 권한 오류인지 또는 무엇인지 확실하지 않습니다. 내가 잘못하고 있습니까, 아니면 더 좋은 방법이 있습니까? 도움을 주셔서 감사합니다.
답변
여기서 적어도 세 가지 문제가 있습니다.
- 이 코드는 양식 내용을
log.txt
(알 수없는 디렉토리에있는) 파일에 쓴 다음 관련되지 않은 파일 을 실행합니다./var/www/html/bash.sh
- 코드는
/var/www/html/bash.sh
인터프리터를 지정하지 않고 실행 되므로 스크립트에서 적절한 shebang에 의존합니다 (외부 테스트에서 인터프리터를 지정 함).sudo bash ...
- 스크립트는 루트가 아닌 서버의 ID (www-data 등)로 실행됩니다.