programing

PHP에서 Bash 명령 실행

javajsp 2023. 7. 23. 14:01

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