Я пытаюсь запустить файл сценария sh из функции php shell_exec()
, но каждый раз, когда возврат является некорректным.PHP shell_exec() не возвращает правильное состояние
Это содержание ш файла:
if [[ -z $1 ]]
then
echo "svn st: NULL"
else
command=$(ssh -q [email protected]_OF_THE_REMOTE_NODE "svn st $1")
if [[ -z $command ]]
then
test="svn st: OK"
else
test="svn st: KO"
fi
echo $test
fi
каждый раз, когда я запускаю этот скрипт ш от оболочки эхо всегда правильно. «$ 1» содержит рабочий каталог, который я должен проверить.
Но если я запускаю тот же сценарий таким образом:
$w_path = $working_path['path'];
$com = "sh /tmp/my_script_test.sh $w_path";
echo "content com ".$com;
$res = shell_exec($com);
echo "content res ".$res;
последнее эхо-печать ВСЕГДА «СВН-й: OK», что является правильным для некоторого $w_path
, но полностью uncorrect для других! Зачем? Как я могу найти ошибку?
Я не думаю, что это проблема с ключом ssh, потому что я использовал руководство для решения этой проблемы, и теперь мне не нужно вставлять пароль для удаленного сервера.
Благодаря уважением
Выполняется ли сценарий php тем же пользователем, который выполняет скрипт? Введите 'whoami' в верхней части файла sh, ваш php-скрипт, вероятно, запускается как www-data или apache (у кого нет доступа к удаленному серверу с помощью keypair). –
Привет, Джон за вашу помощь. Да, во-вторых, пользователь «Apache», а не «root», но я поместил ключ ssh в var/www/.shh локального сервера в remote /root/.shh/authorized_keys. Должен ли я делать другие вещи? – michoprogrammer
Измените команду на 'sh -x /tmp/my_script_test.sh $ w_path', так что вы увидите все расширения переменных. – Barmar