Не может выполнить Сценарий PHP с помощью должностного лица PHP

При ошибке вы сначала отправляете 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");

})
15
задан amra 24 January 2013 в 09:22
поделиться

4 ответа

То, что делает должностное лицо, принимает самое правое управление и добавляет его Вашему месту назначения. Если у Вас есть строка хижины в Вашем сценарии 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 &')

это, кажется, проблема со способом, которым исполнительные дескрипторы вводят в противоположность самой оболочке.

- Джон

16
ответ дан 1 December 2019 в 00:14
поделиться

Избежать установленных проблем PHP в этой области, почему бы не вставить эту внутреннюю часть сценарий оболочки? PHP может тогда выполнить сценарий оболочки, который имеет все перенаправления, обработанные внутренне.

, Если необходимо динамично изменить вещи, затем почему бы не записать сценарий оболочки и затем выполнить его (и конечно, моются впоследствии)?

0
ответ дан 1 December 2019 в 00:14
поделиться

Проблема с самим 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 единственным путем мне удалось получить эту работу.

8
ответ дан 1 December 2019 в 00:14
поделиться

У меня тоже была эта проблема, и оказалось, что это ошибка в php (# 11430). Исправление заключается в использовании php-cli при вызове другого скрипта php внутри скрипта php. Таким образом, вы все еще можете использовать exec, но вместо использования php используйте php-cli при вызове его в браузере:

exec("php-cli  somescript.php");

Это сработало для меня.

28
ответ дан 1 December 2019 в 00:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: