discuz上传提示Sever (IO) Erro 的解决办法 [复制链接]

moqu8 2017-2-2

4 0
discuz上传提示Sever (IO) Erro 的解决办法



今天论坛上传一个附件的时候提示Sever (IO) Erro,感觉很奇怪,因为上传的文件仅仅300多KB,完全不是大小的原因,百度一下发现很多人遇到这个问题。首先我可以确定不是设置问题,因为之前上传的文件比这个大的多都没问题。那么一定是文件本身的问题,检查了一下这个压缩包,发现里面有一个.svn开头的文件夹,而这个文件夹的作用是subversion的版本控制信息文件,当某个目录处于subversion的版本控制时,在这个目录中就会.svn这个文件夹,这个.svn文件夹中的文件就是一些版本信息文件,供subversion使用,SVN初始工作主要是运行服务器,分配目录并导入初始文件。这样就可以肯定是服务器为了安全拒绝了这个文件的上传。删除这个无用的文件,再次上传,发现可以了!当然,网上还有些人的解决方法,这里罗列一下:

一般出现此类问题都是服务器环境的原因。  

1:如果是虚拟空间,上传出现Server (IO) Error  错误 ,那么就找空间商吧,但是我估计这个问题空间商也不会管的,他不会为你一个人更改整个服务器配置环境。所以找一个可靠专业的空间商是必须的。



2:如果你是vps,独立主机,那么你可以看看 这位兄弟的解决方案

从虚拟机转移到独立服务器后比较容易出现这个问题。

问题故障一般如下:



1,PHP.INI的配置问题。(网上优化及配置教程很多就不写出来了)



2,应用程序池的问题



上传附件 大概在 30秒左右出现 Sever (IO) Erro 。



这个问题我的出现在应用程序池上 ,合理配置 回收及性能 即可。




3.很多朋友说到30秒的时候就出现Server (IO) Error  错误,  

打开php.ini查找  max_execution_time

默认值是30 ,你可以把这个值该大一些,或许能解决该问题。

max_execution_time   =   600 ;每个PHP页面运行的最大时间值(秒),默认30秒



max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒




注:为什么要设置那么大而不用默认的30. 那是你不能保证你上传的网速,如果网速太慢,时间太长,那多半会出现该问题!



PHP优化:

如果你是用独立服务器,又或者VPn、vps之类的,那么我教你优化php.ini

注意:任何修改先做文件备份!!

首先打开你的php.ini

想知道这个文件在哪的话,把下面代码复制到新建的文件里面,再重命名为:discuz.php    当然,我的网站www.yyg888.com使用的是discuz,这个文件名是我随便改的,这个不重要!



  1. <?php[/size][/font][/color]

  2. phpinfo();

  3. [color=#222222][font=Helvetica, Arial, sans-serif][size=15px]?>
复制代码




用你的网站地址运行,查找Loaded Configuration File,就显示你的php.ini的位置。



ctrl+f查找:disable_functions

找到后在=后面添加

(这里都是禁止在php里面执行的函数)代码: 复制内容到剪贴板

exec,system,passthru,error_log,ini_alter,dl,openlog,syslog,readlink,

symlink,link,leak,fsockopen,proc_open,popepassthru,chroot,scandir,

chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,popen



上面内容请放到一行。因为保持帖子的整体效果作了换行



一般后台只用加:复制内容到剪贴板



disable_functions = system,passthru,shell_exec,com,exec,shell





查找:display_errors

如果是On的话改成Off

查找:magic_quotes_gpc

如果是Off的话改成On

查找:register_globals

如果是On的话改成Off

查找:open_basedir

后面增加

/www/:/tmp/



这里是限制php可以访问的目录,后面一定要加上/,否则如果有/wwwabcd这个目录也会被访问得到

多个目录用英文:分隔。如果不添加/tmp/的话Discuz!的上传功能就无法使用

注意:以上内容在php.ini的开头会有相关设置的提示,请按ctrl+x查找下一个,不要直接在上面修改



------------------------------



对php.ini优化

GD库的支持

;extension=php_gd2.dll

将前面的冒号去掉,

output_buffering = Off

输出缓存允许你甚至在输出正文内容之后发送 header(标头,包括cookies)行其代价是输出层减慢一点点速度。你可以使用输出缓存在运行时打开输出缓存, 或者在这里将指示设为 On 而使得所有文件的输出缓存打开。

output_handler = ; 你可以重定向你的脚本的所有输出到一个函数,

那样做可能对处理或以日志记录它有用。

例如若你将这个output_handler 设为ob_gzhandler, 则输出会被透明地为支持gzip或deflate编码的浏览器压缩。

设一个输出处理器自动地打开输出缓冲。

找到这个

output_buffering = Off

修改为

On

注意,不要设置数值,只需要设置为On即可。

相应的,你还可以在你的discuz后台,打开gzip支持,也是优化的一项内容。

有些朋友为了安全,还启用了php的安全模式,这个也是一办法

另外有些朋友需要使用全局变量和MAGIC,这是一些php程序的必备条件,discuz2.0也需要

可以打开,不过安全性能将降低,方法很简单。

register_globals = Off ;

将其修改为On即可.

一些朋友经常反映无法上传较大的文件或者后台备份数据经常超时

max_execution_time = 30 ; 这个是每个脚本运行的最长时间,可以自己修改加长,单位秒

max_input_time = 60 ; 这是每个脚本可以消耗的时间,单位也是秒

memory_limit = 8M ; 这个是脚本运行最大消耗的内存,也可以自己加大

upload_max_filesize = 2M ; 上载文件的最大许可大小 ,自己改吧,一些图片论坛需要这个更大的值





如果:

php报错显示PHP has encountered an Access Violation at XXXXXX解决办法

很多人说,是php版本的问题,其实不然,可以从四个地方来看这个问题



1,是否zend所需的dll文件所在目录给的权限不够,必须有读取和运行的权限

2,是否使用的2003,设置过应用池,比如池中限制了什么什么,调整一下再试试看,是否好了,呵呵

3,php.ini有两个地方没有设置,而且一些程序必须用到的

将;upload_tmp_dir该行的注释符,使该行在php.ini文档中起作用。

upload_tmp_dir是用来定义上传文件存放的临时路径,在这里你还可以给其定义一个绝对路径,

例如:upload_tmp_dir = d:upload  当然,此时你的d:upload目录必须有读写权限。

这里我设置为

upload_tmp_dir = c:\temp

出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,

解决的方法是将session.save_path和session.cookie_path 设置置为

session.save_path = c:\temp

session.cookie_path = c:\temp(我没有修改这项,我发现修改后的验证玛不能用)

然后在c:\目录下建立一个temp目录



完成以上我教你的,那么,重启你的php吧,最直接的方法就是重启服务器。

好了,完成一切!





应用程序池的配置

163721h44l2rei7n44i2lp.jpg.thumb.jpg



163723b8hv8z3892a9wuch.jpg.thumb.jpg





最新回复 (0)
返回
支持中心
邮箱:winkill2012@qqcom
新站优化中!部分功能尚未完善,敬请谅解!
支持中心