【发布时间】:2010-11-22 20:59:31
【问题描述】:
使用 PHP 上传器并想知道是否有办法在特定脚本中覆盖 php.ini 中 post_max_size 和 upload_max_filesize 的默认值?
不想在 php.ini 中普遍更改它,因为虽然可以在我们的管理部分对上传器设置很大的限制,但我们不希望在公共部分设置那么大的限制。
【问题讨论】:
使用 PHP 上传器并想知道是否有办法在特定脚本中覆盖 php.ini 中 post_max_size 和 upload_max_filesize 的默认值?
不想在 php.ini 中普遍更改它,因为虽然可以在我们的管理部分对上传器设置很大的限制,但我们不希望在公共部分设置那么大的限制。
【问题讨论】:
您应该可以通过 .htaccess 文件执行此操作。假设您希望管理区域允许 10Mb 上传,公共端允许 2 次上传。我将默认值(在 php.ini 中)设置为 2 Mb,然后在管理区域中,添加到 htaccess 文件:
php_flag upload_max_filesize 10M
编辑
这是为了在目录级别上工作 - 我假设你的管理页面都是从 mydomain.com/admin/ 运行的,在你的 webroot 中有一个物理 /admin 文件夹(你放置 .htaccess 文件的位置)
【讨论】:
除非您每次访问都写入 .htaccess 文件,否则无法按用户更改此值。
为什么不简单地允许上传并在它太大时丢弃它?
我确实找到了this,但我不相信它,因为 HTML 不知道你在用那个输入做什么。
编辑:基本上,由于 Apache 负责处理文件的实际物理传输,因此您需要 Apache 在用户提交表单之前了解任何限制。由于 HTML 与此无关,您不能在此处设置它,而且 PHP 仅在文件实际位于服务器上时才有用,您需要在上传后检查它。抱歉,我意识到我的第一个答案有点含糊。希望这会有所帮助。
【讨论】:
尝试使用phpini_set函数
您应该可以通过这种方式覆盖 php.ini 文件中的默认值。只需确保在任何页面输出之前调用它即可。
【讨论】: