如何通过 PHP 的 apache 模块版本动态更改 upload_tmp_dir,即在上传文件写入磁盘之前

发布于 2024-08-03 05:23:19 字数 110 浏览 6 评论 0原文

我想轮换写入临时文件的位置,但据我了解,PHP 脚本只有在完整帖子完成后才会执行。到那时,该文件已经从配置文件写入默认临时位置,该配置文件是在生成 apache 并加载 php 模块时加载的。有什么想法吗?

I want to rotate the location where temporary files are written however it is my understanding that the PHP script wont execute until after the full post is already completed. By that time the file is already written to the default temp location from the configuration file which is loaded in at the time apache is spawned and the php module is loaded. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

水中月 2024-08-10 05:23:19

正如您所提到的,不可能动态更改它,因为上传是在页面执行之前完成的 - 即不能进行花哨的 ini_set 调用。

一种可能的解决方法:

您可以在 php.ini 文件中设置临时上传位置以指向符号链接 (/tmp/myuploads),该符号链接又指向您的其中一个选择的上传位置 (/mnt/uploadstore_1/)。

然后,您可以让处理上传的 PHP 文件在每次运行时将符号链接位置更改为新位置(基本上相当于 'rm /tmp/myuploads && ln -s /mnt/uploadstore_2/ /tmp/myuploads')。

这应该确保接下来的上传最终会到达您选择的下一个位置。

As you mention, it isn't possible to change it dynamically since the upload is completed before the page executes -- i.e. no fancy ini_set calls can be made.

A possible workaround:

You could set the temporary upload location in your php.ini file to point to a symlink (/tmp/myuploads) that in turn points to one of your chosen upload locations (/mnt/uploadstore_1/).

You can then have the PHP file that handles the upload change the symlink location to a new location each time it runs ( basically the equivalent of a 'rm /tmp/myuploads && ln -s /mnt/uploadstore_2/ /tmp/myuploads').

This should make sure that the upload that comes next ends up in your next-in-line chosen location.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文