Загрузка документов больше не работает на сайте publi c, но работает локально? - PullRequest
0 голосов
/ 29 января 2020

Я в основном работаю в C#, но унаследовал php / laravel приложение, которое работает довольно хорошо. Это работает в течение достаточно долгого времени, и я никогда не сталкивался с этой проблемой. Сегодня около 11 утра наш сайт больше не загружает изображения / стандартные документы.

Мы работаем в среде windows с установленным IIS и PHP. У нас есть код, который позволяет загружать, скажем, изображение и хранить некоторую дополнительную информацию. PHP / Laravel (даже проверил журналы IIS, просмотрщик событий и журналы laravel) и ошибки не происходит. Наше приложение просто пытается загрузить файл. В конце концов наш экран просто обновляется и документ или файл не загружается. Если я попробую этот же тест локально на моем компьютере (так как мы его разработали), он будет работать нормально, и загрузка произойдет.

Я знаю, что необходимо обеспечить разрешения для расположения файла, но, как я уже сказал, это работает нормально за последние полтора года. Поскольку сайт не имеет доступа, мы используем учетную запись IUSR, и этому пользователю предоставляются правильные разрешения для соответствующих каталогов (каталогов, в которых мы храним документы или файлы изображений). Я также позаботился о том, чтобы обновления windows не вызывали эту проблему, однако последнее обновление windows было в 1/24, и наш сайт работал нормально в этот день вплоть до 28 числа этого месяца.

Код для Пример выглядит следующим образом:

   // Audit Documents: Label Image
    if ($request->hasFile('audit_label_image')) {
        $document = new Document();
        $document->title = 'Document for Audit with id ' . $audit->audit_id;
        $document->filetype = $request->audit_label_image->extension();
        $document->save();

        $audit_document = new AuditDocument();
        $audit_document->audit_id = $audit->audit_id;
        $audit_document->document_id = $document->document_id;
        $audit_document->type_id = 63; // "Label Image" document type
        $audit_document->save();

        $request->audit_label_image->storeAs('audit', $document->document_id . '.' . $request->audit_label_image->extension() );
    }

Наше приложение имеет основную запись, которая сохраняется (аудит), а затем отправляется для сохранения других объектов, связанных с аудитом. Это документ, и затем мы сохраняем ссылку этого аудита на документ (отсюда объект выше AuditDocument). Когда мы нажимаем кнопку «Сохранить» в нашем пользовательском интерфейсе, он вращается, как будто пытается сохранить изображение / документ. Никаких ошибок консоли или сетевых ошибок ... он, наконец, обновляет экран только для того, чтобы сохранить фактический объект "Audit" в нашей таблице аудита (сервер sql), однако документ, документ аудита и изображение (физический файл) не сохраняются Я даже попытался написать небольшой тест, чтобы загрузить файл, и мы ничего не получили.

Я не знаю, получает ли он ошибку HTTP 500 (так как никаких ошибок нам не дано). Как уже упоминалось, все это недавно перестало работать, но мы не внесли изменения в код, чтобы вызвать это. Не знаете, где еще я могу посмотреть или какие-либо указатели на стороне php / laravel, которые могли бы мне помочь?

Обновление

Любая из наших форм с enctype="multipart/form-data" вызывает Эта проблема. В ту минуту, когда мы удаляем эту строку, все работает, но, конечно, файл не публикуется. Кто-нибудь еще работает на IIS с PHP / Laravel, который сталкивался с этой проблемой в прошлом? Мы дали права на IUSR, IIS_USERS, IIS_WPG, NETWORK, SYSTEM, AUTHENTICATED USERS, так что разрешения должны быть в порядке ...

Ответы [ 3 ]

0 голосов
/ 29 января 2020

Я предлагаю вам использовать Xdebug и заглянуть за кулисы, что именно происходит. Вот ссылка laracast, которая поможет вам понять, как ее использовать, а также как настроить laravel. поверьте мне, это повысит вашу производительность.

Как использовать и настраивать Xdebug

0 голосов
/ 31 января 2020

Проблема решена - странно, мне пришлось go в C:\Windows\Temp и очистить этот каталог, он содержал 80 гигабайт временных файлов, которые PHP генерировал и никогда не удалял. В ту минуту, когда я очистил это, все начало работать. Что странного в том, что на этом сервере все еще было достаточно места (более 20 гигабайт), поэтому я не знаю, было ли какое-то ограничение на эту папку?

В любом случае, сейчас у меня все хорошо!

0 голосов
/ 29 января 2020

Включить журналы и посмотреть, как правильно отлаживать. Возможно, это связано с тем, что имя файла не является уникальным или mime-типом, недостаточно места на хостинге, просто отладьте его с помощью журналов

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