UPLOAD_ERR_CANT_WRITE但其他文件正在上传

che*_*ema 12 php apache ubuntu

我在服务器中遇到了一个非常奇怪的行为.

我可以上传任何小于1MB的文件而没有问题,但那些更大的文件会给我一个错误UPLOAD_ERR_CANT_WRITE == 7.

tmp /文件夹具有权限,因为我可以上传其他文件.

我的PHP.INI上的配置似乎很好,我之前使用phpmyadmin上传了大于1MB的文件并且它有效.

PHP.INI

  • file_uploads开
  • post_max_size 200M
  • max_execution_time 30
  • memory_limit 128M
  • max_file_uploads 20
  • upload_max_filesize 200M
  • upload_tmp_dir/tmp

有什么我想念的?在我的本地机器完全相同的配置:S

我使用ubuntu服务器13.04 PHP 5.4.9和Apache 2.2.22

肯定是有史以来最愚蠢的事情,我在这浪费了2个小时,我已经在php.net检查过大量的文档,但没有运气.任何帮助都非常受欢迎.

谢谢!!!

更新10-01-2014:仍然没有运气我无法解决它.

che*_*ema 21

感谢您的所有答案,我发现了错误.

服务器是由OVH安装程序完成的Ubuntu安装.我不知道他们将以如此糟糕的方式创建分区:

  • 使用的文件系统大小可用使用%挂载
  • 溢出1.0M 136K 888K 14%/ tmp
  • / dev/md2 1.8T 13G 1.7T 1%/ home

所以我做的是在php.ini中修改upload_tmp_dir到另一个带空格的文件夹...

可怕的是我浪费了这么多时间,我从未想过实际上是一个空间问题,因为在HD我有2TB!

再一次感谢并希望这对其他人有用.

  • 这也是我的解决方案.我的AWS微型实例磁盘上的磁盘已满.我清除了一堆垃圾,但我仍然看到了错误.我将upload_tmp_dir设置为/ usr/tmp,一切都重新开始了.我仍然不知道原来的tmp目录在哪里. (2认同)

Man*_*olo 1

这可能是由于你的memory_limit配置造成的。换成256M试试。如果它有效,您应该检查您的代码以减少内存使用。

如果是由于您的权限配置造成的,您将看到:

ls -la /yourUploadDirectory
Run Code Online (Sandbox Code Playgroud)

您应该看到类似以下内容:

drwxr-xr-x 65 user group     4096 nov 13 09:47 .
drwxr-xr-x  3 user   group       4096 ago  7 18:09 ..
Run Code Online (Sandbox Code Playgroud)

group目录.(第一行)应该是www-data. 如果不是,请执行以下操作:

chown yourUser:www-data /yourUploadDirectory
Run Code Online (Sandbox Code Playgroud)

drwxr-xr-x应该是drwxrwxr-x。如果不是,请执行以下操作:

chmod 0775 /yourUploadDirectory
Run Code Online (Sandbox Code Playgroud)

现在您已完成上传。