2012-06-04 6 views
0

execshell_exe으로 쉘 스크립트를 실행하려고하면 아무 일도 일어나지 않습니다! 명령을 ls 또는 whoami으로 실행하면 모든 작업이 완료됩니다.PHP에서 쉘 스크립트 실행

무엇이 될 수 있습니까?

+3

어떻게 실행하려고하는지 예를 들어주세요. –

+0

정규화 된 PATH (예 : "/ usr/local/myscript")를 사용해 보셨습니까? – paulsm4

+0

http : // whathaveyoutried.com/ –

답변

1

출력을 에코합니까?

echo exec('ls'); 

safe_mode를 사용하고 있습니까?

phpinfo(); 

때 예 :

(수동)에서 참고 : 안전 모드가 활성화되면, 당신은 단지 safe_mode_exec_dir 안의 파일을 실행할 수 있습니다. 실용적인 이유 때문에 현재 실행 파일의 경로에 구성 요소가있는 것은 에 허용되지 않습니다. 이 127 경로가 잘못 가능성 키우면 표시되면

봅니다

exec('...pathtoyourbashscript...', $out, $return); 

그런

echo $return; 

와 간부를 호출합니다.

권한을 확인하십시오. 사용자 'nobody'는 아마도 아파치 사용자 일 것이며 스크립트에 접근하고 실행할 권한이 필요합니다.

당신은이 같은 의미

chmod 755 pathtouyourscript

을 실행하여 권한을 변경할 수 있습니다 '다른 사람이 읽거나이 파일을 실행하면 난 상관 없어를,하지만 나는 그것을 수정할 수 있어야한다'.

+0

'echo exec ('ls');는 잘 작동합니다. 필자는'phpinfo()'와 ** 안전 모드가 꺼져 있다는 것을 보여 주었다. 구성 명령에서 ** '- enable-safe-mode'** ** – Oleg

+0

경로가 잘못되었다는 것을 알았습니다. 위의 편집 내용을 참조하십시오. –

+0

그 반환 ** 1 **. 그것의 도움이된다면, 내가 누구인지 누가 whoami인지를 확인할 때 ** 아무도 보이지 않습니다 **. – Oleg

0

Apache를 사용하는 경우 Apache 사용자가 PHP 파일을 실행하는 데 필요한 권한이 있는지 확인하십시오.

+0

Dale Smith, 어떻게 확인할 수 있습니까? 그것은 내가 생각하는 모든 권한을 가지고있다 ... – Oleg

0

리플렉션을 사용하여 기능이 사용 중지되었는지 알아낼 수 있습니다 (disable_functions).

$exec = new ReflectionFunction('exec'); 
print $exec->isDisabled() ? 'Disabled' : 'Enabled'; 
+0

나는 'ReflectionFunction'을 사용했다 ... 그것은 보여준다. ** Enabled ** – Oleg

0

프로그램이 웹 기반 (Linux 용) 인 경우 셸 처리를 위해 PHP 파일을 만들어보십시오. 과 PHP를 처리하는 쉘 파일 ..

예를 들어

: runAllShell.php 파일은 루프 :

<?php 
// Developed by A T. 
// Count the files 
$directory = '/put/directory/path_here/'; 
$files = glob($directory . '*.*'); 

if ($files !== false) 
{ 
    $filecounter = count($files); 

} 
else 
{ 
    echo "No Files were found"; 
} 
$fileCount = $filecounter; 

// Start the index 
$fileNumber = 1; 
while($fileNumber <= fileCount){ 
shell_exec('$fileNumber . ".sh"'); 
// get some feedback 
echo "The ".$fileNumber." file has been excecuted"; 
// increment file number 
$fileNumber++; 

} 
?> 

하면 디렉토리의 모든 .sh로 파일을 numericaly에 대한 정렬되었는지 확인을 포함 할 수 있습니다 이 일을 즉 : 1.sh 2.sh 3.sh 등등.

감사합니다. AT.

관련 문제