3 / 2 / 0
Регистрация: 17.07.2015
Сообщений: 52
1

Shell через php

01.04.2018, 14:10. Показов 1573. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, такая проблема:
Хочу сделать запуск shell скрипта через php, начитался форумов и решил что все просто...
Написал такую вот банальщину:
PHP
1
2
3
4
<?php
$result = shell_exec('file.sh start all');
echo $result;
?>
создал сам файл file.sh, в котором при запуске с командой(к примеру) start аргументом all выполняется действие
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
if [ -z "$1" ]; then
    echo "Usage: $EXEC $COMMAND TARGET" 1>&2
    exit 1
fi
 
TARGET="$1"
shift
 
case $COMMAND in
start)
    if [ "$TARGET" == "all" ]; then
    echo ""
    echo "***START***"
        start_all
    else
        start $TARGET
    fi
    ;;
stop)
    if [ "$TARGET" == "all" ];then
    echo ""
    echo "***STOP***"
        stop_all
    else
    stop $TARGET 1
    fi
    ;;
fstop)
    fstop $TARGET 0
    ;;
kill)
    kill $TARGET
    ;;
*)
    echo "unknown"
    exit 1
esac
Это не точный код, просто для примера, максимально приближенный к моему, суть в том что он работает при запуске через консоли(пути, винСЦП и т.д.)
Однако при запуске моего ПХП скрипта, в окне браузера, тупо отображается содержимое файла file.sh и все что в нем написано, ничего не выполняется... как будто я просто текстовый файл открываю посмотреть...
Подскажите кто шарит, что я делаю не так? И как сделать так чтобы при запуске пхп скрипта выполнялся shell сценарий.
Пробовал так же все команды из мануала: exec, system, ну и т.д. результат не меняется.
Права выставил 6777, пробовал тоже разные и 777 и 775 и cmod a+x. вобще ничо не дало.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2018, 14:10
Ответы с готовыми решениями:

Задержка консоли при выполнении php скрипта через php.exe
Доброго времени суток! Я ассоциировал в total commander (внутренние ассоциации) файлы *.php с...

Php+html!? Как в php файле вывести input type='button' через echo!?
ну собственно говоря я все спросил в заголовке...

Запуск PHP файла через другой php фили
Извеняюсь за чяйниковский Вопрос Как реализовать такую задачку есть срипт 1.PHP как зделать так...

Доступ к mySQL возможен только через Shell доступ. Что это значит ?
Доступ к mySQL возможен только через Shell доступ. Что это значит ? На меня завели БД mySQL и...

2
355 / 116 / 20
Регистрация: 08.01.2015
Сообщений: 1,343
Записей в блоге: 1
01.04.2018, 20:55 2
Все должно работать. Значит, чот-то со скриптом не то. Попробуйте запустить, для начала. обычную команду оболочки, например, ls или dir.
0
3 / 2 / 0
Регистрация: 17.07.2015
Сообщений: 52
01.04.2018, 23:04  [ТС] 3
команды все пашут, не пашет именно исполнение shell скрипта, он просто отображается как текст вместо исполнения...
При этом с консоли он исполняется...

Добавлено через 22 минуты
мне кажется все дело в echo, надо заставить пхп выполнятся как то по другому.

Добавлено через 1 час 31 минуту
вобщем такой момент, в скрипте есть место где проверяется pid процесса, выглядит так:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
EXE="$0"
BASEPATH=`pwd`
EXEPATH=${BASEPATH/%config/bin}
PIDPATH=${BASEPATH/%config/run}
 
function check_pid(){
    if [ $# -lt 1 ]; then
        return 0
    fi
 
    PIDFILE="$PIDPATH/$1.pid"
    if [ -f $PIDFILE ]; then
        PID=`cat $PIDFILE`
        count=`ps -ef | grep $PID | grep $1 | grep -v "grep" | wc -l`
        if [ $count -gt 0 ]; then
            return 0
        fi
    fi
    return 1
}
не работает вот тут: PID=`cat $PIDFILE`
PID пустое, проверил сам файл, у него стоят разрешения только для владельца. Т.е. сат ничего не читает потому что видимо нет прав, но при выставлении файлу прав на полный доступ, пхп запрос просто виснет. В браузере такое сообщение: 504 Gateway Time-out.
Пробовал тупо вписать в PID число из файла, т.к. я заведомо знаю что он существует и в нем число, эффект такой же как с фул правами, просто виснет, скрипт не выполняется...

Когда PID пустой, все заканчивается этим:
PowerShell
1
2
3
4
5
    check_pid $SERVEREXE
    if [ $? -eq 1 ]; then
        echo "$SERVEREXE is not running."
        return 0
    fi
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2018, 23:04
Помогаю со студенческими работами здесь

Горим! Нужна авторизация через PHP и второй вариант через Cookie
Использование сессий и cookie Ваш сайт состоит из 2-х php-страниц : 1. Страница авторизации....

Защита сайта через htaccess и через функции php
Привет. Есть несколько вопросов по безопасности сайта через htaccess. На сайте есть WordPress и...

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

Поиск через php
&lt;?php $f = file('путь к файлу'); $search = $_GET; foreach ($f as $v) { $v = trim($v);...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru