我很久以前就解决了这里描述的问题,但我真的不记得上载不起作用的主要原因是什么。有很多事情需要修复,以便上传可以正常工作。我创建了清单,可以帮助其他有类似问题的人,并且我将对其进行编辑以使其尽可能地有用。就像我之前在聊天中说的那样,我当时在嵌入式系统上工作,因此在非嵌入式系统上可能会跳过一些要点。
检
upload_tmp_dir
入php.ini。这是PHP在上传时存储临时文件的目录。检
open_basedir
入php.ini。如果定义,它将PHP读/写权限限制为指定的路径及其子目录。确保upload_tmp_dir
该路径在此路径内。检
post_max_size
入php.ini。如果您要上传20 MB的文件,请尝试更大的操作,例如post_max_size = 21M
。这定义了上载期间可能使用的POST消息的最大大小。检
upload_max_filesize
入php.ini。这指定了可以上传的最大文件。检
memory_limit
入php.ini。那是脚本可能消耗的最大内存量。很明显,它不能小于上传大小(说实话,我不太确定,PHP在复制临时文件时可能正在缓冲)。确保您正在检查正确的php.ini文件,该文件是Web服务器上的PHP使用的文件。最好的解决办法是执行这里描述的指令脚本http://php.net/manual/en/function.php-ini-loaded-file.php(
php_ini_loaded_file
功能)检查用户php的运行方式(请参见此处的操作方法:如何检查用户php的运行方式?)。我曾在不同的发行版和服务器上工作。有时是这样
apache
,但有时可能是root
。无论如何,请检查该用户是否具有在临时目录和要上载到的目录中进行读写的权限。如果要上载到子目录,请检查路径中的所有目录(例如,/dir1/dir2/
-checkdir1
和和都选中dir2
。在嵌入式平台上,有时需要限制对根文件系统的写入,因为它存储在闪存卡中,这有助于延长该卡的寿命。如果使用脚本启用/禁用文件写入,请确保在上载之前启用写入。
在某些平台上,基于会话的PHP> 5.4上传监视存在严重问题(如http://phpmaster.com/tracking-upload-progress-with-php-and-javascript/所述)。首先尝试一些简单的操作(例如:http : //www.dzone.com/snippets/very-simple-php-file-upload)。如果可行,您可以尝试更复杂的机制。
如果您在php.ini中进行了任何更改,请记住重新启动服务器,以便重新加载配置。



