2012-10-28 4 views
-1
echo shell_exec("ll"); 

왜이 코드를 실행할 때 php가 파일 및 디렉토리 목록을 표시하지 않습니까?PHP : PHP에서 쉘 명령을 실행 하시겠습니까?

+0

그래서 당신을 위해 그것을 출력을 무엇? –

+1

아래의 정답 (별칭을 실행하려고 시도하고 있음) 외에도 호스트에서 서버 측 명령을 실행할 수 있는지 확인하십시오. – jheddings

+1

안녕하세요 사용자, 나는 이것이 재미있는 질문이라고 생각했지만, 더 많은 정보가 없으면 많은 상영을 얻을 것이라고 생각하지 않습니다. 이 명령을 실행했을 때 얻었던 결과와 같은 세부 정보를 추가하고 [다른 사용자가 시도한] 명령이있는 경우 [편집]을 고려하십시오. IMHO, 이것은 미래의 방문자들에게도 도움이 될 더 upvote- 가치있는 게시물로 만들 것입니다! 행운을 빕니다! :) – jmort253

답변

5

ll 명령이 아닙니다. 나는 echo shell_exec("ls");이 디렉토리 목록을 출력한다고 믿습니다.

또한 안전 모드에서 PHP를 실행하는 경우 몇 가지 문제가 발생할 수 있습니다. 여기에 더 많은 정보가 있습니다 : http://php.net/manual/en/function.shell-exec.php

shell_exec :이 기능은 PHP가 안전 모드에서 실행 중일 때 비활성화됩니다.

결국, 당신은 readdir 같은 bash는 명령을 실행하기 위해 더 보안 대안이 : http://php.net/manual/en/function.readdir.php은. 이것은 특정 디렉토리에있는 파일을 읽는 기능입니다.

readdir($dir_handle) 예 :

<?php 

if ($handle = opendir('/path/to/files')) { 
    echo "Directory handle: $handle\n"; 
    echo "Entries:\n"; 

    while (false !== ($entry = readdir($handle))) { 
     echo "$entry\n"; 
    } 

    closedir($handle); 
} 
?> 
5

앨리어스 처리 된 명령을 사용하고 있습니다. 그래서 이유가 있습니다. ls을 실행하면 어떻게 되나요?

출처 : PHP page for shell_exec과 경험

+0

'ls'가 작동합니다. 감사. – user1091856

+0

Word. 행운을 빕니다 :) – DeeDee

5

LL 자주 (당신의 .bashrc 파일에) bash는 기본 별칭으로 추가됩니다.

하지 이러한 경우 하다며 여부를 다시 확인하려면 터미널에 다음을 입력 :

type -a ll 

귀하의 쉘 LL 별칭 또는 실제 프로그램인지 여부를 알려줍니다.

PHP는 기본 별칭이 설치되지 않은 다른 환경에서 실행됩니다. 당신은 아마 원하는

명령 식입니다 :

shell_exec("ls -l"); 
관련 문제