При ошибке вы сначала отправляете an error occured
, а затем снова отправляете successfully added
. Вы не можете этого сделать, вы можете отправить ответ клиенту только один раз.
Вам необходимо прекратить выполнение кода после отправки сообщения об ошибке.
Joi.validate(req.body, schema, (err, result) => {
if(err){
console.log(result)
return res.send('an error occured');
}
console.log(result)
//Perform knex insert into db
res.send("successfully added");
})
То, что делает должностное лицо, принимает самое правое управление и добавляет его Вашему месту назначения. Если у Вас есть строка хижины в Вашем сценарии PHP, Вы не должны должны быть включать двоичную директиву php интерпретатора.
, если Вы просто хотите вывод сценария, попробуйте:
exec('/home/quote2bi/tmp/helloworld.php > /tmp/execoutput.txt 2>&1 &')
однако, если Вы не хотите ошибок быть в файле, необходимо перенаправить STDERR до вывода в файл. Как так:
exec('/home/quote2bi/tmp/helloworld.php 2> /dev/null > /tmp/execoutput.txt')
вышеупомянутое должно только произвести "Привет Мир" к execoutput.
Редактирование:
Интересный Вы получаете это поведение. Вы заявили, что команда "ls" работала. Попытайтесь делать псевдоним для этого и передайте его файлу как так:
alias pexec='php /home/quote2bi/tmp/helloworld.php'
затем
exec('pexec > /tmp/execoutput.txt 2>&1 &')
это, кажется, проблема со способом, которым исполнительные дескрипторы вводят в противоположность самой оболочке.
- Джон
Избежать установленных проблем PHP в этой области, почему бы не вставить эту внутреннюю часть сценарий оболочки? PHP может тогда выполнить сценарий оболочки, который имеет все перенаправления, обработанные внутренне.
, Если необходимо динамично изменить вещи, затем почему бы не записать сценарий оболочки и затем выполнить его (и конечно, моются впоследствии)?
Проблема с самим PHP, это рассматривает все как $argv в сценарии. Это doesnВґt перенаправляет вывод в файл ou к/dev/null.
я столкнулся с той же проблемой некоторое время назад. То, что я сделал, должно создать runscript.php
в/opt/php-bin и затем в этом скрипте, запущенном, что Он должен выполнять. Что-то вроде этого:
$script = $argv[1]
$params = implode(' ', array_slice($argv, 2));
$cmd = "{$script} {$params} > /dev/null &";
$output = array();
$return = 0;
exec("php {$cmd}", $output, $return);
exit((int)$return);
И затем Вы называете это использованием:
exec('/opt/php-bin/runscript.php /path/to/your/script.php arg1 arg2')
ItВґs единственным путем мне удалось получить эту работу.
У меня тоже была эта проблема, и оказалось, что это ошибка в php (# 11430). Исправление заключается в использовании php-cli при вызове другого скрипта php внутри скрипта php. Таким образом, вы все еще можете использовать exec, но вместо использования php используйте php-cli при вызове его в браузере:
exec("php-cli somescript.php");
Это сработало для меня.