我在 Laravel v11 应用程序上上传大于 8 MB 的文件时遇到问题,该应用程序托管在 Linux 上运行的 Azure 应用服务上。
这是我已经完成的上传限制配置:
在 Nginx 中设置
client_max_body_size
指令,并验证其是否按预期工作:
client_max_body_size 50M;
通过
php.ini
更新了 PHP PHP_INI_SCAN_DIR
设置。在服务器的 shell (SSH) 上运行 php -i
确认已加载正确的参数:
upload_max_filesize = 30M
post_max_size = 50M
memory_limit = 256M
尽管有这些设置,我只能上传小于 8 MB 的文件。尝试上传大约 10 MB 的文件会导致以下错误:
The server returned a "413 Content Too Large".
有趣的是,当我将
post_max_size
和upload_max_filesize
设置为1M
时,我仍然能够成功上传7MB的文件。
这是
php -i | grep max
在服务器上的输出:
max_execution_time => 0 => 0
max_file_uploads => 20 => 20
max_input_nesting_level => 64 => 64
max_input_time => -1 => -1
max_input_vars => 1000 => 1000
max_multipart_body_parts => -1 => -1
post_max_size => 1M => 1M
upload_max_filesize => 1M => 1M
zend.exception_string_param_max_len => 15 => 15
session.gc_maxlifetime => 1440 => 1440
unserialize_max_depth => 4096 => 4096
什么可能导致此问题?任何帮助将不胜感激。预先感谢!
解决了!
虽然微软认为它没有记录(或者可能是 Azure 应用服务中的错误),但我在启动脚本中添加了以下语句:
cp /home/site/wwwroot/<path to your custom ini>/<custom ini>.ini /usr/local/etc/php/conf.d/extensions.ini
设置 PHP_INI_SCAN_DIR 环境变量不足以自定义 PHP 设置。因此,我必须手动将ini文件复制到PHP设置位置。