복붙노트

[HADOOP] PHP 스크립트를 실행하면 브라우저에서 쉘을 통해 하둡 명령을 실행합니다

HADOOP

PHP 스크립트를 실행하면 브라우저에서 쉘을 통해 하둡 명령을 실행합니다

나는 PHP에서 shell_exec ()를 통해 터미널에 하둡 명령을 실행하려고하고 브라우저에서 URL을 통해 해당 스크립트를 실행하려고하고있다. 나는 큰 문제에 직면하고있다 :

나는 터미널에서 다음 스크립트를 실행하려고하면 :

<?php
    echo "Begin";
    echo shell_exec('hadoop fs -ls /');
    echo "End";
?>

그것은 HDFS의 루트에있는 모든 항목의 목록을 사용할 수 원하는 결과를 보여줍니다. 시도는 URL을 통해 다음과 같은 스크립트를 실행할 때, 다음과 같은 결과를 보여줍니다

url: localhost/myscript.php

BeginEnd

다른 건 없습니다! 스크립트는 터미널에서가 아니라 브라우저에서 일하고있다.

언제가 스크립트를 변경 :

<?php
    echo "Begin";
    echo shell_exec('ls /');
    echo "End";
?>

이 단자와 브라우저에서 로컬 파일 시스템의 루트 디렉토리에서 사용할 수있는 모든 항목을 보여줍니다.

나는 스크립트가 실행 여부를 확인하는 명령을 변경했습니다.

<?php
    echo "Begin";
    echo shell_exec('hadoop fs -mkdir /test');
    echo "End";
?>

내가 PHP를 인 myscript.php를 사용하여 터미널을 통해 그것을 실행하면 작동 HDFS의 루트 디렉토리에 디렉토리를 생성합니다. 내가 스크립트에서 다른 디렉토리 이름이 URL을 통해 브라우저를 통해 그것을 실행하려고 할 때, 그것은 단지 HDFS의 루트 디렉토리를 생성하지 않고 BeginEnd를 인쇄 할 수 있습니다.

[UPDATED]

나는 아파치 로그 파일에 액세스 할 때, 내가 URL을 로컬 호스트 / 인 myscript.php를로드 한 후 다음 줄은 말합니다 :

[Thu Apr 07 10:04:07.187673 2016] [core:notice] [pid 1540] AH00094: Command line: '/usr/sbin/apache2'
sh: 1: hadoop: not found

나는 플라스크를 사용하여 파이썬 같은 스크립트를 실행하려고 할 때. 명령 "MKDIR"와 "LS"모두 완벽하게 작동하고 브라우저에서 원하는 결과를 보여줍니다.

참고 : 나는 아파치를 사용하지 않는 원하는 일을 파이썬 스크립트를 실행하면, 내가 자신의 서버를 호스팅하는 플라스크를 사용했다.

어떤 문제가되어야 하는가?

해결법

  1. ==============================

    1.아파치 로그 파일에 살펴 보자 (하는 error.log / access.log의). 아파치 사용 php.ini 파일은 PHP가 CLI를 사용 php.ini의보다 동일하지 않다. 어쩌면 당신은의 open_basedir 제한이 있고이 디렉토리 외부 실행 파일을 실행할 수 없습니다.

    아파치 로그 파일에 살펴 보자 (하는 error.log / access.log의). 아파치 사용 php.ini 파일은 PHP가 CLI를 사용 php.ini의보다 동일하지 않다. 어쩌면 당신은의 open_basedir 제한이 있고이 디렉토리 외부 실행 파일을 실행할 수 없습니다.

    http://phpsec.org/projects/phpsecinfo/tests/open_basedir.html

    또한 내부의 phpinfo 기능이있는 test.php 파일을 제작하여 이러한 정보를 확인하고 검색 할 수 있습니다 :

    <? phpinfo() ; ?>
    
  2. from https://stackoverflow.com/questions/36456562/running-php-script-to-execute-hadoop-command-via-shell-on-browser by cc-by-sa and MIT license