PHP - Почему метод system () также добавляет заголовок?

0

Я создавал сценарий загрузки php-изображений. Сценарий отправляет почтовый запрос и (должен) получил ответ json.

Это строка для проверки типа mime.

$mimetype = system("file -bi -- ".escapeshellarg($_FILES["file"]["tmp_name"])); //line 63

и после нескольких строк я устанавливаю заголовок JSON:

header('Content-Type: application/json'); //line 124

но js не работает. При проверке закладки сети в хром:

Изображение 174551

Теги:
system

2 ответа

2
Лучший ответ

Это связано с тем, что функция system() записывает все из оболочки в вывод сценария (что-то вроде автоматического эха). Вы не можете использовать header() после того, как какой-то вывод был отправлен из сценария, и это произошло - system() sended output ("image/png; charset = binary" на вкладке сети перед предупреждением).

Попробуйте вместо этого использовать exec().

  • 0
    Но если система отправляет не файл html, а стандартный вывод, то почему затрагивается часть файла html?
  • 0
    PHP-скрипт автоматически отправляет заголовки после записи первого символа в стандартный вывод. Функция system () ведет себя как echo и выводит команду «echoing», создаваемую в оболочке. По этой причине заголовки отправляются в настоящее время, и вы больше не можете использовать header (). Вызовите header () до того, как system () и предупреждение должны исчезнуть.
Показать ещё 1 комментарий
0

Он не отправляет заголовки сам по себе, он просто отправляет результат выполнения, и как только это отправлено, слишком поздно отправлять заголовки.

Я предлагаю сначала отправить заголовки или как @kbarborak предложил использовать функцию exec().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню