symfony — PHP печатает строку буфера на веб-странице при определенных обстоятельствах?

Я не знаю, как это объяснить, но я попробую.

Эта проблема касается 2 серверов, локального и хостинг-сервера. На обоих серверах установлена ​​одна и та же версия PHP 7.0 [с почти одинаковыми конфигурациями]. И 2 действия контроллера. И проблема исходит от $app->run($input, $out); из кодов ниже.

У меня в контроллере это действие:

     /**
* @Route("/testJson")
*/
public function testJsonAction() {
$app = new \Symfony\Bundle\FrameworkBundle\Console\Application($this->get("kernel"));
$app->setAutoExit(false);

$opt = array("command" =>
"doctrine:generate:entity",
"--entity" => "GuervylEditorBundle:TestOnline",
"--fields" => "kl:string");

$input = new \Symfony\Component\Console\Input\ArrayInput($opt);

$out = new \Symfony\Component\Console\Output\BufferedOutput();

$app->run($input, $out);

$out->fetch();

return new JsonResponse(\json_encode(["a" => "b", "c" => "d"]));
}

Вызов этого действия с локального и хост-сервера возвращает "{\u0022a\u0022:\u0022b\u0022,\u0022c\u0022:\u0022d\u0022}" и с Content-Type
application/json
это здорово, это ожидаемый результат.

Теперь возникает проблема:

Этот почти такой же код выше, я установил его внутри другого класса, я вызываю его из другого действия контроллера, который проходит через 4 метода из разных классов, чтобы вызвать метод с кодом выше [callCommand]

Это метод, который реализует код:

public function callCommand($cmd, $opt, &$mykernel = null) {
if ($mykernel == NULL) {
$mykernel = new myKernel("dev", false, __DIR__ . "/../Resources/template_2.8/app");
}

$app = new \Symfony\Bundle\FrameworkBundle\Console\Application($mykernel);
$app->setAutoExit(false);

$opt = array("command" => $cmd) + $opt;

$input = new \Symfony\Component\Console\Input\ArrayInput($opt);

$out = new \Symfony\Component\Console\Output\BufferedOutput();

$app->run($input, $out);
}

Из этого другого действия контроллера я также возвращаю контент json в конце. Я не могу показать код, потому что он слишком большой.

Когда я вызываю это действие контроллера с моего локального хоста, я получаю контент JSON и Content-Type: application/json что хорошо

Но, позвонив с хостинг-сервера, я получаю дополнительные сообщения:

Entity generation


created ./src/Guervyl/EditorBundle/Entity/TestCase.php
> Generating entity class src/Guervyl/EditorBundle/Entity/TestCase.php: OK!
> Generating repository class src/Guervyl/EditorBundle/Repository/TestCaseRepository.php: OK!


Everything is OK! Now get to work :).

Какой вывод текста из консоли при звонке $app->run($input, $out);, После этого я получаю HTTP-заголовок, который я устанавливаю, затем содержимое json. А также тип контента application/x-httpd-php5,

Эта ошибка происходит только на конкретном хостинг-сервере. Я проверил другой хостинг-сервер, код работает как на моем локальном сервере.

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

0

Решение

Ну, после отладки кода я заметил, что ошибка произошла, потому что я не установил --no-interaction вариант. Поэтому без этой опции Symfony ждал ввода, когда для сущности не было указано никаких полей.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]