PHP приходит с ошибкой создания временного файла, но я использую только обычные поля ввода формы - PullRequest
0 голосов
/ 30 марта 2020

У меня очень странная ошибка в PHP и / или IIS, которую я вообще не могу понять. Кажется, у меня есть предел вложенности переменной POST или массива, хотя я изменил все, что мне кажется связанным. Я получаю эту ошибку:

Уведомление : Неизвестно: файл создан во временном каталоге системы в Неизвестно в строке 0

Предупреждение : невозможно изменить информацию заголовка - заголовки уже отправлены в Неизвестно в строке 0

У меня есть это настройка:

  • PHP 7.2.29
  • Windows Server 2012 R2 с IIS (8,5?)

Что я делаю в своем Исходная страница действительно проста, и я не вообще занимаюсь обработкой файлов, поэтому у меня не должно быть проблем с загрузкой временных файлов или чем-то подобным. Да и вообще не стоит пытаться создать временный файл !? Все, что у меня есть, - это form с некоторыми input полями, а затем я делаю phpinfo() на своей странице назначения (для отладки).

У меня есть эта ниже исходная страница PHP, на которой есть stati c количество данных. Я вывожу 100 строк, и в каждой строке у меня есть переменная-массив с именем var. Эта переменная имеет значение c 12345678:

<?PHP
    echo "<form action='postpage.php' method='POST'>";
    echo "<input type='submit' /><br><br>";
    for ($row = 0; $row < 100; $row++) {
        for ($column = 0; $column < 9; $column++) {
            echo "<input type='text' name='var[]' value='12345678' /> ";
        }
    echo "<br>";
    }
    echo "</form>";
?>

My postpage.php имеет только это содержимое:

<?PHP
    phpinfo();
?>

Но когда я нажимаю Отправить в моей форме, тогда я получаю ошибку, как показано выше, и phpinfo() не не показывает какие-либо переменные POST или REQUEST вообще!?

Интересно то, что когда я изменяю stati c значение от 12345678 до 1234567 тогда все работает! Кроме того, если я изменяю имя переменной и количество строк или столбцов, я могу настроить ее, но я всегда сталкиваюсь с проблемами, которые, как я смею, говорят о довольно небольшом объеме данных.

Я бы поверил, что быть PHP или настройкой IIS, но я попробовал все, что знаю, и вот настройки, которые у меня есть:

PHP:

  • max_input_nesting_level = 10000
  • max_input_vars = 100000
  • memory_limit = 512M
  • post_max_size = 512M

IIS (Диспетчер IIS> MyServer> Фильтрация запросов> Строки запроса> Редактировать настройки функций):

  • Максимальная длина URL = 65536
  • Максимальная строка запроса = 32768

У кого-нибудь есть идеи, на что я могу обратить внимание?

1 Ответ

0 голосов
/ 30 марта 2020

После дополнительного устранения неполадок я обнаружил проблему - это был неисправный каталог для upload_tmp_dir в php.ini

Хотя я не изменил этот параметр каталога последние несколько лет, и я ожидал, что это сработает, тогда, видимо, это не так. Не так много недель go Я обновил PHP с 7.2.x до более новой версии 7.2.x, но до сих пор не сталкивался с этой проблемой.

Когда я обновил каталог до правильного каталога загрузки затем неожиданно возникла другая ошибка:

Предупреждение : неизвестно: входные переменные превысили 1000. Для увеличения предела измените max_input_vars в php .ini. в Неизвестно в строке 0

Эта ошибка, которую я могу отнести и после изменения этого значения на более высокое, чем все работает: -)

Я вижу, что в PHP 7.1 tempnam теперь выдает Notice, поэтому мое текущее предположение состоит в том, что, возможно, повар ie или аналог использует этот метод, а затем выдает уведомление, которое отменяет другая ошибка.

Если у вас есть лучший ответ, пожалуйста, предложите, поскольку я приму это как ответ, поскольку я не пытаюсь задавать вопросы и просто принимаю мои собственные ответы! : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...