Я разрабатываю проект Laravel на Windows 10 локально, используя Laragon
Версия PHP: 7.1.8 64bit NTS
связанный с php.ini, который я знаю
post_max_size = 8M
file_uploads = On
Исходный код:
// if no image uploaded if (!$request->hasFile('profile_picture')) throw new \Exception("No image found"); // get uploaded image $image = $request->file('profile_picture'); // store to storage/app/users/ Storage::putFileAs('users', $image ,auth()->id());
На мой взгляд, это проблема конфигурации сервера, возможно, проблема на php.ini,
но я не знаком с конфигурацией сервера, и в этой теме не так много тем, связанных с этой проблемой.
Я знаю причину проблемы, но я не знаю, как ее решить.
Вы уверены, что пользователь, который запускает пользователя процесса веб-сервера, имеет доступ RW (чтение / запись) к Windows TEMP Directory? Если нет, вы обязательно потерпите неудачу!
Возможное исправление для этого – установить PHP TEMP Dir в читаемое / записываемое местоположение.
На вашем php.ini
установите эту директиву.
upload_tmp_dir
= 'PATH'
Убедитесь, что существует «PATH», и ваш пользователь процесса веб-сервера имеет доступ для чтения / записи.
Процесс веб-сервера Пользователь – это учетная запись, используемая вашим веб-сервером для запуска службы. Вы можете проверить это в диспетчере задач.
Через 2 дня я наконец понял, почему. В прошлый раз я использовал версию PHP-TS (Thread Safe) для разработки этого приложения, и он работал нормально.
К настоящему времени я использую версию PHP-NTS (Non Thread Safe), и после тестирования я смог подтвердить, что эта проблема была вызвана другим результатом информации о файлах NTS & TS
Для PHP 7.1.7 64-битный TS
Для PHP 7.1.8 64bit NTS
Итак, теперь мы можем знать, что ошибка возникает в настройках временных файлов,
Для версии NTS временная папка на C: \ Windows \ Temp,
Нет разрешения этой папки, потому что PHP не может прочитать realPath (я думаю), realPath return false
Для версии TS временная папка на C: \ Users \ YQuan \ AppData \ Local \ Temp,
Разрешить доступ, читаемый realPath
Изменить разрешение на изменение папки
Я не буду использовать этот метод, потому что слишком беспорядочно менять разрешение на систему Windows
установите upload_tmp_dir в php.ini в «C: \ Users \ {username} \ AppData \ Local \ Temp», затем перезапустите сервер
этот метод проще.