html 양식으로 프롬프트되는 bash 스크립트를 어떻게 실행합니까?


0

현재 진행중인 방법은 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"

그런 다음 잘 실행합니다. 이것이 권한 오류인지 또는 무엇인지 확실하지 않습니다. 내가 잘못하고 있습니까, 아니면 더 좋은 방법이 있습니까? 도움을 주셔서 감사합니다.

답변:


0

여기서 적어도 세 가지 문제가 있습니다.

  • 이 코드는 양식 내용을 log.txt(알 수없는 디렉토리에있는) 파일에 쓴 다음 관련되지 않은 파일 을 실행합니다./var/www/html/bash.sh
  • 코드는 /var/www/html/bash.sh인터프리터를 지정하지 않고 실행 되므로 스크립트에서 적절한 shebang에 의존합니다 (외부 테스트에서 인터프리터를 지정 함).sudo bash ...
  • 스크립트는 루트가 아닌 서버의 ID (www-data 등)로 실행됩니다.

log.txt와 bash.sh는 관련이 없기 때문에 이것이 문제라고 생각하지 않습니다. 스크립트는 #! / bin / sh로 시작하므로 exec ()에 sudo bash를 추가해야합니다. ? 마지막으로 말한 것을 고치는 방법을 잘 모르겠습니다. 어떤 아이디어?
TheNatercacker

log.txt와 bash.sh는 관련이 없어야합니다 . 그런 다음 폼의 코드는 어떻게 bash.sh에 있습니까? 스크립트는 #! / bin / sh /bin/sh is '로 시작합니다bash . 그리고 댓글에 답하는 대신 질문을 편집하십시오 ...
xenoid
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.