php上传不到文件(Linux 服务器)
服务器从2010-12月一直运行到2011-4-7日,可以上传图片
但今天发现突然就上传不到文件了php.ini的配置已经是.
环境:linux(Centos 5.3) + Apache + php +mysql
网站目录文件:使用smb挂载 windows 服务器的磁盘阵列共享
网站目录权限:777
php.ini :
-----------------------------------------------------
upload_max_filesize = 200M
max_file_uploads = 20
post_max_size = 200M
max_execution_time = 60000
max_input_time = 6000
;max_input_nesting_level = 64
memory_limit = 256M
------------------------------------------------------
可CMS系统一直提示说没有足够的权限,查阅相关资料得知php.ini文件中有一个指定临时文件夹的参数(会把所有上传的文件都放到临时文件夹里面)
即:
-----------------------------------------------------
;upload_tmp_dir =
-----------------------------------------------------
上面默认是注释的,即会使用虚拟内存来做存储
当内存使用满了就会出现上传不到文件的问题了,也就是会提示777错误
使用df - h 命令查询 发现结果如下:
--------------------------------------------------------------------------------------
/dev/mapper/VolGroup00-LogVol00
29G 28G 0 100% /
/dev/sda1 99M 12M 82M 13% /boot
tmpfs 1014M 0 1014M 0% /dev/shm
//192.168.1.100/website 322G 21G 301G 7% /www/web/website
----------------------------------------------------------------------------------------
tmpfs已经满了,所以我把改成在mount的目录里面建立了个upload_tmp文件夹,把刚才的“upload_tmp_dir = ”设置成 “upload_tmp_dir =/www/web/website/upload_tmp
”
保存后重启了一下apache,恢复上传了.
注意:要给上传的目录 777权限 包括下面的子目录 chmod -R 777 目录名
总结:
临时文件最好是还是设置成挂载的磁盘空间(最好大一点),因为tmpfs默认值会是物理内存的1/2倍,上传几个文件很快就会满了,这样会引起文件上传不了,所以配置各种网站环境的时候 应该注意临时文件存放的目录