PHP shell_exec не выполняется - PullRequest
0 голосов
/ 29 июня 2018

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

Вот оболочка, которую я пытаюсь выполнить:

if(isset($_POST["name"])){

$name = $_POST["name"];

//the script to check the service status of ElasticSearch (which works fine btw)
$status = shell_exec("systemctl status elasticsearch");

//I use a simple regex to get from the above script's output if the status of the service is "running" or not
preg_match("/\bactive\s+\K\S+/", $status, $result);

switch ($name){
    case "start":
        $shell = shell_exec("sh ../../../../scripts/startElasticsearch.sh");
        echo $shell;
        if($result[0] == "(running)"){
            echo "Node started successfully.";
        }
        break;
    case "restart":
        $shell = shell_exec("sh ../../../../scripts/restartElasticsearch.sh");
        echo $shell;
        if($result[0] == "(running)"){
            echo "Node restarted successfully.";
        }
        break;
    case "stop":
        $shell = shell_exec("sh ../../../../scripts/stopElasticsearch.sh");
        echo $shell;
        if($result[0] !== "(running)"){
            echo "Node stopped successfully.";
        }
        break;
}
}

Это сценарий оболочки из 3 .sh файлов, которые я написал:

#!/bin/bash
systemctl start elasticsearch

#!/bin/bash
systemctl restart elasticsearch

#!/bin/bash
systemctl stop elasticsearch

Я уже изменил все разрешения для запуска оболочки (например, chmod 755 и т. Д.).

Теперь вот трипая часть: когда я отлаживал выполнение оболочки, я пытался echo «Hello World», чтобы я мог быть уверен, что мой php-скрипт работал нормально (так как systemctl start/restart/stop elasticsearch ничего не выводит) И все работало нормально. Я получил ответ «Hello World» из сценария на тосте, когда нажал кнопку. Но ничего больше из трех приведенных выше сценариев (я отслеживал состояние службы через Kibana).

Есть идеи?

1 Ответ

0 голосов
/ 05 июля 2018

После еще нескольких копаний я нашел эту статью , которая ответила на мой вопрос. Это была только простая ошибка использования sh в скрипте, который вызывал проблему. Спасибо всем за ваше время!

...