Drupal 8 Webform 文件上传

我有一个简单的表单,只有一个字段,可以使用 Webform 模块 6.0.1 在 Drupal 8 站点上上传文件。如果我使用 webforms 测试工具测试表单,文件可以正常上传,它会显示加载图标几秒钟并准备上传,但是如果我在将表单嵌入为块的页面中尝试相同的操作,我不能上传文件,如果我尝试提交表单,无论我等待多长时间,它都会向我显示以下消息。

“正在上传文件。上传的文件可能会丢失。要继续吗?”

只是为了测试,我将最大上传文件增加到 2GB,我上传的文件只有 5kb。我能想到的所有 .js 库都在我的 template.info.yml 文件中。 (core/drupal, core/jquery, core/drupal.ajax) 私有文件夹已在我的 settings.php 中设置,并且权限设置正确,.htaccess 文件也按照 Drupal 的建议设置。我试图上传公用文件夹中的文件就像绝望一样,但我得到了同样的错误

任何帮助将不胜感激。

stack overflow Drupal 8 Webform File upload
原文答案

答案:

作者头像

我知道这已经有一年多了,但 JIC 其他人也遇到过这个问题:

您可能需要对四个文件进行更改以提高上传时的内存限制。第一个是两个独立的 php.ini 文件。一个是您服务器的 php.ini,另一个是 Drupal 根文件夹中 Drupal 安装的 php.ini。服务器的 php.ini 会将设置应用于服务器上的所有 Drupal 安装(以及任何使用 PHP 的东西),而 Drupal 根 php.ini 文件将仅应用于该 Drupal 安装。在 memory_limitupload_max_filesizepost_max_size 下的 php.ini 文件中进行更改。您通常可以通过 cPanel 的 MultiPHP INI 编辑器编辑服务器的 php.ini 文件。

下一个文件是 .htacess 文件,您可以在其中更改 php_value memory_limit 下的值。更改此项只会影响 .htaccess 文件所属的 Drupal 安装。该文件可以在 Drupal 根目录中找到,但有时很难找到,因为它是一个隐藏文件。 FTP 客户端 Forklift 可以选择在“查看”>“显示查看选项”>“显示隐藏文件”下显示隐藏文件。您选择的 FTP 客户端也可能有显示隐藏文件的选项。

最后一个文件是 settings.php 文件 (sites/default/settings.php),要更改的值可以在 ini_set('memory_limit', '') 下找到。例如:ini_set('memory_limit', '64M');同样,这只会影响 settings.php 文件所属的 Drupal 安装。

memory_limit 这设置了允许脚本分配的最大内存量(以字节为单位)。这有助于防止编写不当的脚本耗尽服务器上的所有可用内存。请注意,要没有内存限制,请将此指令设置为 -1。

post_max_size 设置允许的帖子数据的最大大小。此设置也会影响文件上传。要上传大文件,此值必须大于 upload_max_filesize。一般来说,memory_limit 应该大于post_max_size。

upload_max_filesize 上传文件的最大大小。