Drupal 文件管理全解析
1. 服务器集群下的文件管理
在 Web 服务器集群上运行 Drupal 时,临时文件目录的位置需要由所有 Web 服务器共享。因为 Drupal 可能使用一个请求上传文件,再用另一个请求将文件状态从临时变为永久,许多负载均衡方案会导致临时文件上传到一台服务器,而第二个请求却发送到另一台服务器。这种情况下,文件看似上传成功,但永远不会出现在与之关联的节点或内容中。
- 解决方案:
- 确保所有 Web 服务器使用相同的共享临时目录。
- 使用基于会话的负载均衡器。
- 文件目录应像数据库一样,对所有 Web 服务器全局可用。
2. 私有文件管理
在私有下载模式下,文件文件夹可以位于 PHP 可读可写的任何位置,并且在大多数情况下,不应直接由 Web 服务器访问。私有文件的安全性是以性能为代价的,Drupal 负责检查访问权限并提供文件服务,而不是将文件服务工作委托给 Web 服务器,并且每次文件请求都会完全启动 Drupal。
3. PHP 设置
php.ini
中的一些设置容易被忽略,但对文件上传很重要:
3.1 post_max_size
位于 php.ini
的数据处理部分,由于文件通过 HTTP POST 请求上传,尝试上传大于 post_max_size
的文件会因发送的 POST 数据量过大而失败。示例设置如下:
; Maximum