API can't return respone after run shell_exec Laravel
I'm trying to exec a shell file when user calling my API. This is my code wrote in Laravel routes/api.php:
Route::get('process', function() {
define("SHELL_PATH","/home/ubuntu");
ini_set('max_execution_time', 60);
$arrProcess = array(
"sudo sh",
"./shell.sh",
"NAME=taanh",
"2>&1"
);
chdir(SHELL_PATH);
$process = shell_exec(implode(" ", $arrProcess));
return response()->json([
"status" => 0,
"process" => $process
],200);
});
My shell.sh take about 30s to execute so i set max_execution_time to 60. I've try to set it up to 300.
The shell run successfully but api return The connection was reset instead of my json response.
I also try Symfony/Process but still face this problem.
define("SHELL_PATH","/home/ubuntu");
ini_set('max_execution_time', 60);
$arrProcess = array(
"sudo sh",
"./shell.sh",
"NAME=taanh",
"2>&1"
);
chdir(SHELL_PATH);
$process = new Process(implode(" ", $arrProcess));
$process->run(function ($type, $buffer) {
if (Process::ERR === $type) {
return response()->json([
"status" => 1,
"code" => 5004,
"msg" => "Error when run site",
],500);
} else {
return response()->json([
"status" => 0,
"msg" => "Run shell successfully",
"process" => $buffer
],200);
}
});
Any problem in my code? Thanks!
php laravel shell api exec
add a comment |
I'm trying to exec a shell file when user calling my API. This is my code wrote in Laravel routes/api.php:
Route::get('process', function() {
define("SHELL_PATH","/home/ubuntu");
ini_set('max_execution_time', 60);
$arrProcess = array(
"sudo sh",
"./shell.sh",
"NAME=taanh",
"2>&1"
);
chdir(SHELL_PATH);
$process = shell_exec(implode(" ", $arrProcess));
return response()->json([
"status" => 0,
"process" => $process
],200);
});
My shell.sh take about 30s to execute so i set max_execution_time to 60. I've try to set it up to 300.
The shell run successfully but api return The connection was reset instead of my json response.
I also try Symfony/Process but still face this problem.
define("SHELL_PATH","/home/ubuntu");
ini_set('max_execution_time', 60);
$arrProcess = array(
"sudo sh",
"./shell.sh",
"NAME=taanh",
"2>&1"
);
chdir(SHELL_PATH);
$process = new Process(implode(" ", $arrProcess));
$process->run(function ($type, $buffer) {
if (Process::ERR === $type) {
return response()->json([
"status" => 1,
"code" => 5004,
"msg" => "Error when run site",
],500);
} else {
return response()->json([
"status" => 0,
"msg" => "Run shell successfully",
"process" => $buffer
],200);
}
});
Any problem in my code? Thanks!
php laravel shell api exec
add a comment |
I'm trying to exec a shell file when user calling my API. This is my code wrote in Laravel routes/api.php:
Route::get('process', function() {
define("SHELL_PATH","/home/ubuntu");
ini_set('max_execution_time', 60);
$arrProcess = array(
"sudo sh",
"./shell.sh",
"NAME=taanh",
"2>&1"
);
chdir(SHELL_PATH);
$process = shell_exec(implode(" ", $arrProcess));
return response()->json([
"status" => 0,
"process" => $process
],200);
});
My shell.sh take about 30s to execute so i set max_execution_time to 60. I've try to set it up to 300.
The shell run successfully but api return The connection was reset instead of my json response.
I also try Symfony/Process but still face this problem.
define("SHELL_PATH","/home/ubuntu");
ini_set('max_execution_time', 60);
$arrProcess = array(
"sudo sh",
"./shell.sh",
"NAME=taanh",
"2>&1"
);
chdir(SHELL_PATH);
$process = new Process(implode(" ", $arrProcess));
$process->run(function ($type, $buffer) {
if (Process::ERR === $type) {
return response()->json([
"status" => 1,
"code" => 5004,
"msg" => "Error when run site",
],500);
} else {
return response()->json([
"status" => 0,
"msg" => "Run shell successfully",
"process" => $buffer
],200);
}
});
Any problem in my code? Thanks!
php laravel shell api exec
I'm trying to exec a shell file when user calling my API. This is my code wrote in Laravel routes/api.php:
Route::get('process', function() {
define("SHELL_PATH","/home/ubuntu");
ini_set('max_execution_time', 60);
$arrProcess = array(
"sudo sh",
"./shell.sh",
"NAME=taanh",
"2>&1"
);
chdir(SHELL_PATH);
$process = shell_exec(implode(" ", $arrProcess));
return response()->json([
"status" => 0,
"process" => $process
],200);
});
My shell.sh take about 30s to execute so i set max_execution_time to 60. I've try to set it up to 300.
The shell run successfully but api return The connection was reset instead of my json response.
I also try Symfony/Process but still face this problem.
define("SHELL_PATH","/home/ubuntu");
ini_set('max_execution_time', 60);
$arrProcess = array(
"sudo sh",
"./shell.sh",
"NAME=taanh",
"2>&1"
);
chdir(SHELL_PATH);
$process = new Process(implode(" ", $arrProcess));
$process->run(function ($type, $buffer) {
if (Process::ERR === $type) {
return response()->json([
"status" => 1,
"code" => 5004,
"msg" => "Error when run site",
],500);
} else {
return response()->json([
"status" => 0,
"msg" => "Run shell successfully",
"process" => $buffer
],200);
}
});
Any problem in my code? Thanks!
php laravel shell api exec
php laravel shell api exec
edited Nov 22 '18 at 8:30
ImYuta
asked Nov 22 '18 at 8:23
ImYutaImYuta
14
14
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Solved!
In my shell.sh include a line that make nginx restart. Edit my sh file fix the problem.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53426621%2fapi-cant-return-respone-after-run-shell-exec-laravel%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Solved!
In my shell.sh include a line that make nginx restart. Edit my sh file fix the problem.
add a comment |
Solved!
In my shell.sh include a line that make nginx restart. Edit my sh file fix the problem.
add a comment |
Solved!
In my shell.sh include a line that make nginx restart. Edit my sh file fix the problem.
Solved!
In my shell.sh include a line that make nginx restart. Edit my sh file fix the problem.
answered Nov 22 '18 at 9:19
ImYutaImYuta
14
14
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53426621%2fapi-cant-return-respone-after-run-shell-exec-laravel%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown