Выполнить скрипт оболочки с php - PullRequest
0 голосов
/ 23 февраля 2019

Мне нужно выполнить сценарий оболочки до php .Я использую Apache веб-сервер для запуска своих php-страниц.

Я знаю, что есть другие вопросы, похожие на мои (которые я уже прошел), но по некоторым причинам я не могучтобы заставить мою работу.

Вот мой php файл:

<code><?php

$output = shell_exec('sh /usr/local/hadoop-3.0.2/copytoallhdfs.sh');

echo "<pre>" . $output . "
";?>>

Вот мой сценарий оболочки copytoallhdfs.sh :

#!/bin/bash

myarray=`bin/hdfs dfs -ls -C /`
echo $myarray; 

for name in $myarray 
do bin/hdfs dfs -copyFromLocal myData/* $name; 
done

Мой сценарий copytoallhdfs.sh находится по пути /usr/local/hadoop-3.0.2​. Поэтому обычно php должен выполнять мой сценарий оболочки и отображать выводecho $myarray;, но в моем браузере ничего не отображается.

Возможно, в моих php.ini есть проблемы с разрешениями или что-то отсутствует, но я просто не могу решить эту проблему.
Может кто-нибудь, пожалуйста, дайте мне обойти это.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

С комментарием @nacho я подумала, что нужно что-то делать с расположением моего sh script .Я отредактировал свой скрипт sh и вставил pwd, чтобы проверить местоположение, которое он мне дает.Затем я понял, что он дает мне местоположение моего каталога apache.

Поэтому я изменил местоположение и вставил полный путь для выполнения команды bin/hdfs.Это сработало!

Вот мой обновленный скрипт:

#!/bin/bash

myarray=`/usr/local/hadoop-3.0.2/bin/hdfs dfs -ls -C /`
echo $myarray;

for name in $myarray
do /usr/local/hadoop-3.0.2/bin/hdfs dfs -copyFromLocal /usr/local/hadoop-3.0.2/myData/* $name;
done

Это была глупая ошибка, но я думаю, что это может произойти!

0 голосов
/ 23 февраля 2019

Используйте 2>&1, чтобы достичь того, что

$output = shell_exec('sh /usr/local/hadoop-3.0.2/copytoallhdfs.sh 2>&1');

2 относится ко второму файловому дескриптору процесса, т. Е. Stderr.

> означает перенаправление.

&1 означает, что цель перенаправления должна быть в том же месте, что и первый дескриптор файла, т.е. stdout.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...