linux — запуск php-скрипта для выполнения команды hadoop через оболочку в браузере

Я пытался выполнить команду hadoop на терминале через shell_exec () в PHP и пытается запустить этот скрипт через 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 с другим именем каталога в скрипте, он просто печатает BeginEnd без создания каталога в корне HDFS.

[ОБНОВЛЕНО]

Когда я получаю доступ к файлам журнала apache, после загрузки 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

Когда я пытаюсь выполнить тот же скрипт на Python, используя Flask. Обе команды «mkdir» и «ls» отлично работают и показывают желаемый результат в браузере.

НОТА: Когда я выполняю скрипт Python для желаемой работы, я не использую apache, я использовал Flask для размещения своего собственного сервера.

В чем должна быть проблема?

0

Решение

Загляните в свои лог-файлы apache (error.log / access.log). Php.ini, используемый для apache, отличается от php.ini, используемого с php-cli. Возможно, у вас есть ограничение open_basedir и вы не можете запустить исполняемый файл за пределами этого каталога.

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

Вы также можете проверить эту информацию, создав файл test.php с функцией phpinfo внутри и просмотрите его:

<? phpinfo() ; ?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]