gpt4 book ai didi

php - 设置 PHP tmp 目录 - PHP 上传不起作用

转载 作者:IT王子 更新时间:2023-10-29 01:20:50 27 4
gpt4 key购买 nike

我正在使用 Valums file uploader 通过带有进度条的网页上传文件.几乎一切正常,但我无法更改默认的 tmp 目录,该目录存储文件上传期间。

文件应该存放在/upload目录,而不是系统默认的/tmp目录,因为/tmp挂载在RAM盘中其大小限制为 4 MB,用户将上传大约 10 MB 的文件。

我搜索了很多网页,但没有一个解决方案有效。我在 php.ini 中设置了临时目录:

upload_tmp_dir =/upload

我已经设置了/upload目录的权限,而apache是​​文件的所有者,所以这个目录肯定是PHP可写的。

我已将文件 uploader 中的目标路径设置为 /upload,因为我希望上传后的文件也存储在此目录中。最终结果是小文件上传成功,但大于 4 MB 的文件上传失败——我想到这种行为的唯一原因是文件在上传过程中存储在 /tmp 中。可以肯定的是,我已经用 sys_get_temp_dir() 检查了它,结果是 /tmp-所以 PHP 会忽略我的 php.ini 指令或者有其他设置方法上传期间文件的存储位置。

哦,最后一个信息:open_basedir 没有设置,所以 PHP 对磁盘的访问只受文件权限的限制。

最佳答案

这里描述的问题很久以前就被我解决了,但我真的不记得上传无法正常工作的主要原因是什么。有很多事情需要修复,以便上传可以正常工作。我创建了可能会帮助其他有类似问题的人的 list ,我将对其进行编辑以使其尽可能有用。正如我之前在聊天中所说的,我正在研究嵌入式系统,因此在非嵌入式系统上可能会跳过一些点。

  • 检查 php.ini 中的 upload_tmp_dir。这是 PHP 在上传时存储临时文件的目录。

  • 检查 php.ini 中的 open_basedir。如果已定义,它将 PHP 读/写权限限制为指定路径及其子目录。确保 upload_tmp_dir 在此路径内。

  • 检查 php.ini 中的 post_max_size。如果您想上传 20 MB 的文件,请尝试更大一点的文件,例如 post_max_size = 21M。这定义了您在上传期间可能使用的最大 POST 消息大小。

  • 检查 php.ini 中的 upload_max_filesize。这指定了可以上传的最大文件。

  • 检查 php.ini 中的 memory_limit。这是脚本可能消耗的最大内存量。很明显它不能小于上传大小(说实话我不太确定——PHP 在复制临时文件时可能正在缓冲)。

  • 确保您检查的是正确的 php.ini 文件,该文件是 PHP 在您的网络服务器上使用的文件。最好的解决方案是使用此处描述的指令执行脚本 http://php.net/manual/en/function.php-ini-loaded-file.php (php_ini_loaded_file函数)

  • 检查 php 以什么用户身份运行(参见此处如何操作:How to check what user php is running as?)。我曾在不同的发行版和服务器上工作过。有时它是 apache,但有时它可以是 root。无论如何,请检查该用户是否有权在您要上传到的临时目录和目录中进行读写。检查路径中的所有目录,以防您上传到子目录(例如 /dir1/dir2/ - 检查 dir1dir2

  • 在嵌入式平台上,您有时需要限制对根文件系统的写入,因为它存储在闪存卡上,这有助于延长该卡的使用生命周期。如果您使用脚本来启用/禁用文件写入,请确保在上传之前启用写入。

  • 我在某些平台上基于 session (如 http://phpmaster.com/tracking-upload-progress-with-php-and-javascript/ 所述)的 PHP >5.4 上传监控存在严重问题。首先尝试一些简单的东西(比如这里:http://www.dzone.com/snippets/very-simple-php-file-upload)。如果可行,您可以尝试更复杂的机制。

  • 如果您在 php.ini 中进行任何更改,请记住重新启动服务器,以便重新加载配置。

关于php - 设置 PHP tmp 目录 - PHP 上传不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12531408/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com