PHP에서 Bash 명령 실행
명령행을 통해 실행되는 bash 스크립트가 있습니다.
./script.sh var1 var2
특정 php 파일을 호출한 후 위의 명령을 실행하려고 합니다.
제가 지금 가지고 있는 것은:
$output = shell_exec("./script.sh var1 var2");
echo "<pre>$output</pre>";
하지만 효과가 없습니다.사용해 보았습니다.exec그리고.system하지만 스크립트는 실행되지 않았습니다.
하지만 내가 뛰려고 할 때shell_exec("ls");효과가 있고,$output모든 파일의 목록입니다.
제가 사용하고 있는 VPS의 제한 때문인지 아니면 다른 곳에 문제가 있는 것인지 잘 모르겠습니다.
스크립트를 호출하기 전에 올바른 디렉토리로 이동해야 합니다.이렇게 하면 셸 명령을 호출하기 전에 스크립트가 "안에" 있는지 확인할 수 있습니다.
$old_path = getcwd();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);
shell_exec은 디렉토리에서 www-data 사용자에 의해 실행됩니다.시도해 보세요
putenv("PATH=/home/user/bin/:" .$_ENV["PATH"]."");
스크립트가 /home/user/bin에 있는 위치 나중에
$output = "<pre>".shell_exec("scriptname v1 v2")."</pre>";
echo $output;
명령의 출력을 표시하려면(또는 경로를 내보내지 않고 ./script.sh 대신 스크립트의 전체 경로를 지정하십시오.
사용하는 도메인의 php.ini 또는 .htaccess에서 open_basedir를 설정하지 않았는지 확인합니다.그것은 당신을 당신의 도메인 디렉토리에 가둘 것이고 php는 이 디렉토리 내에서 실행할 수 있는 액세스 권한만 가질 것입니다.
언급URL : https://stackoverflow.com/questions/11052162/run-bash-command-from-php
'programing' 카테고리의 다른 글
| MySQL(MardiaDB) 종속 테이블의 최신 레코드에서 정보를 가져오는 방법은 무엇입니까? (0) | 2023.07.23 |
|---|---|
| 페이지 로드가 완료될 때까지 페이지 로드 div를 표시하는 방법은 무엇입니까? (0) | 2023.07.23 |
| 모노레포에서 유형 스크립트 라이브러리 공유 (0) | 2023.07.18 |
| Excel용 csv 파일로 컬러 셀 만들기 (0) | 2023.07.18 |
| config.py 에서 글로벌 구성 변수를 제공하는 가장 Pythonic한 방법은 무엇입니까? (0) | 2023.07.18 |