当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪windows下使用IIS配置的PHP无法上传文件的解决方法       延续《Windows Server 2003中iis配置php》一文 服务器上使用Apache2+PHP正常运行,换成IIS+PHP,先后出现了php.ini的环境变量无法读取,php中验证码无法显示的问题,如今又有人反应无法上传图片的问.........
    ▪服务器iis假死的原因及解决方法       打开IIS 你就会看到应用程序池,默认只有一个应用程序池,查看应用程序池的属性,会发现他的回收时间,默认多达,1740分钟,就是说,需要在1740分钟后才回收此应用程序池,如果在这个.........
    ▪解决关于IIS gzip不能正常启用的问题       1、gzip的下载安装 一键开启gzip独立主机/VPS 一键开启IIS的GZIP方法 http://www./article/30151.htm2、安装成功后,基本上是可以的, 一般情况下就是 gzip缓存目录c:\windows\IIS Temporary CompressedFiles 目录,.........

[1]windows下使用IIS配置的PHP无法上传文件的解决方法
    来源: 互联网  发布时间: 2013-12-24
延续《Windows Server 2003中iis配置php》一文
服务器上使用Apache2+PHP正常运行,换成IIS+PHP,先后出现了php.ini的环境变量无法读取,php中验证码无法显示的问题,如今又有人反应无法上传图片的问题。

从IIS替换Apache2的过程仅仅是开启IIS,关闭Apache2,其它的没什么变化,但是却发生了如此多的差异,看样子IIS支持PHP还是有很多要进行修改的。
分析:
根据上面的描述,我怀疑问题出在IIS的权限配置上,IUSR_MACHINE的帐户对upload没有写入的权限,于是进行权限修改,IIS下的权限,NTFS下的权限都进行修改,但是终究都没用,查找网络上的资料也没有相应的,对上传页面进行测试,流程为:
swf文件调用save.php上传文件---->swf文件对上传的文件进行重命名--->名字返回给save.php--->显示出最后的名字。

现在的问题一直停留在swf对文件重命名的这里,一直没有到显示出最后的名字,并且swf文件不参与上传过程,那就只能在save.php文件中进行问题查找了,在该文件中进行测试,最后显示的名字所使用的变量为fileName,于是插入下面的语句进行测试:
echo "fileName=2008*****.gif";
这句话的作用就是使得fileName有值,save.php能正常显示,先把原来的语句一句一句的进行屏蔽测试,都正常的返回了,但是当测试到:
if (mailto:!@move_uploaded_file($f[%22tmp_name"], $dest_dir.'/'.$fileName)) header("HTTP/1.0 404 Not Found");
这句话的时候问题出现了,不能上传,查找上下文,一直没发现tmp_name的变量,不过看意思是先把文件上传到一个临时文件,再挪动到目的位置,那这个tmp位置在哪里呢?是不是这个位置不可写,
才导致了无法上传文件?
查找网上资料,发现php.ini下面有2个地方关于上传的配置:
file_uploads = On 这里设置是否允许HTTP上传,默认应该为ON的
;upload_tmp_dir= 这里设置上传文件存放的临时位置
网上对于这2个地方的相关资料有:
I try to set up file uploading under IIS 7 and PHP 5.
First problem was to set 2 variables in php.ini
file_uploads = On //这里是说php.ini文件这个地方设置成On
upload_tmp_dir = "C:\Inetpub\wwwroot\uploads" //这个路径就是自己设置的上传文件临时存储路径
For some reasons such directory name works,
but "upload_tmp" won't work.
The second problem was to set correct user rigths for upload folders where you try to save your file. I set my upload folder rights for the "WORKGROUP/users" for the full access. You may experiment by yourselves if you not need execute access, for example.
我的php.ini中upload_tmp_dir是被注释的,没有启用,更没有设置,可是为什么Apache2却可以正常上传呢?难道问题真的出在这里?

解决:
新建一个文件夹做临时上传目录,按照上面的英文说明修改php.ini中相应的那2项,把临时上传目录upload_tmp_dir设置成刚才建立的文件夹,把该文件夹的权限赋予“IUSR_计算机名”用户可写,重新启动IIS,上传试试,问题真的就这样解决了。

最终的分析答案:
上面的内容写于09年,但是现在2010年7月我新增一台服务器,又出现了这个问题,同时再次按照上面的解决方法实施,在操作的过程中大概是由于哪里出了错,竟然没有成功,不得不抽出点时间来研究具体原因,找到了最终产生这个问题的原因如下。
无法上传文件,不代表所有文件都无法上传,因为我的一个网站,flash调用fwrite()传头像之类的成功了,但是调用@move_uploaded_file($f["tmp_name"], $dest_dir.'/'.$fileName)这样的函数传照片的时候仍旧无法上传。

经过我的分析,原因是由于fwrite()是传的二进制文件,而move_uploaded_file()传的是文本文件,而windows操作系统是区分这2种文件的 [参考php手册fwrite()函数的说明],这也就是说这2种不同的文件在php环境下上传时所存储的临时上传目录是不同的,由于在配置IIS环境下的PHP的时候,设置的临时目录为E:\tmp,设置该目录的iusr用户可写,二进制文件即可上传,所以我怀疑该目录就是二进制文件上传临时文件的存储位置,那么move_uploaded_file()传的文本文件的临时文件存储位置在哪里呢?其实就是在上面的那段英文里面,upload_tmp_dir设置的路径就是了,但是我的几台服务器中,每台服务器的这个设置的值都是被注释掉的“no value”,为什么有的服务器可以上传,而有的服务器不可以上传呢?这也就回到了以前我提出的问题,为什么Apache2可以上传而iis不可以上传呢?
这次我再次分析upload.php文件,分析其中造成该故障的代码具体内容如下:
代码如下:

// 检查是否有文件上传
if (! $_FILES['upload'.$num]['name'] == ""){
if ($_FILES['upload'.$num]['size'] < $max_size) {
1、 echo "文件上传路径:".$location.$_FILES['upload'.$num]['name'];
2、echo "文件临时文件名:".$_FILES['upload'.$num]['tmp_name'];
3、 move_uploaded_file($_FILES['upload'.$num]['tmp_name'],$location.$_FILES['upload'.$num]['name']) or $event = "Failure";
} else {
$event = "File too large!";
}

其中正常代码中第2句是不存在的,为了测试方便我加上来的,它的主要目的就是测试我的php.ini没有设置upload_dir_tmp的值的时候,上传的文件临时保存在哪里的,经过这个测试发现原来在不配置php.ini的upload_dir_tmp的值的时候,默认的存储位置是在C:\windows\temp目录,并且临时文件是以.tmp为后缀存储的,该文件马上就会被删除,所以你想通过操作系统的文件修改搜索功能是无法找到的,也就无法找到upload_dir_tmp的默认路径是哪里。

既然找到了upload_dir_tmp的默认路径了,那么修改c:\windows\temp的访问权限,赋予IUSR_用户可写,重启动IIS Admin服务,上传文件,终于成功了。这就是为什么我的多台服务器upload_dir_tmp的值都为空的时候有的可传,有的不可传的原因。

现在已经修改了IIS使用环境变量方式精简配置php的那篇文章了,因为当时没有注意这个位置的权限设置,造成了如今的问题,不过最终解决也是好的。

    
[2]服务器iis假死的原因及解决方法
    来源: 互联网  发布时间: 2013-12-24
打开IIS 你就会看到应用程序池,默认只有一个应用程序池,查看应用程序池的属性,会发现他的回收时间,默认多达,1740分钟,就是说,需要在1740分钟后才回收此应用程序池,如果在这个时间内,达到请求的最高限制,那么就会出现ASP假死的情况,这个就是大型网站出现假死的情况,反而,小型网站确不会出现这样的情况,因为他请求少,流量少,还没达到限制数量。当然要看你的服务器上网站数目而定。

单个网站解决方法:

把应用程序池回收时间缩短到300-600分钟,其间回收过程中,需要占用一点CPU资源,没办法,为了稳定性,再把回收时间设为凌晨5点。

多网站解决方法:

假设一台服务器目前拉了70个网站左右,那么可以新建六个应用程序池,把每个池回收时间缩小到300分钟,然后再分配每个池10个网站左右(这个分配是要求你的网站访问量所定)如果某个网站,访问量大,就单独给他一个程序池,但是这样做的后果就是需要大内存,一个池现在占用120M内存左右,反正内存大,没关系。那么多网站如何分配应用程序池,打开IIS--查看你要分配的网站属性,,查看主目录--在下面 你就会看到应用程序池了,分配一个就行了。

大家在使用iis6时..如果装了动网论坛.肯定有出现过iis6假死现像..就是asp网页打开慢..但是iis却是正常的..静态网页打开速度一样..这时候..我一直是重启的方法..查了官方的资料结果没有...

据官方资料说..win2003很快就要打这个补丁了..是iis6对access驱动支持不理像..也算是一个bug吧..由于服务器虚拟主机多..而且大多支持asp..如果一旦假死就无法运行..在多方面的资料查找下..找到了一个比较简单的方法..具体测试是通过了..iis6自带数据应用程序池..现在就利用他来解决假死..

首先把bbs设一个单独的目录..然后点击应用程序池..新建应用程序池.输入应用程序池id..
然后把bbs的虚拟目录下面的.就用程序池..选择刚才新建的应用程序池...
然后再回到刚才设好的应用程序池...点击..属性...把回收工作进程数(分钟)及回收工作进程数还有在下列时间回收时间进程勾上..然后在下列时间回收程序池里左边添加..选择一个时间..一般来说..网站到凌晨3点的时候.基本人都很少了..这时回收一下bbs的进程数..就可以解决了iis假死的现像..

当然还可以配置其他信息..比如说iis6的用户名.. 我们可以打开计处机管理..然后打开计算机用户管理..添加一个用户..设置好后..在应用程序池里面..标识..把添加的用户放上去..用用户来测试回收的进程..当然还有..其他配置..其实很简单..只要你好好看一下..就能明白意思...

对于部分人来说..这种方法可能不太方便..所以可以用一个工具来回收应用程序池..这样方便而且快捷..个人用户当然不需要这种工具..公司用户的话..服务器压力挺大..所以都用工具来解决一些问题.所括.iis的备分.及虚拟主机ip的统一修改及端口访问的ip记录..用批处理是一个很简单又方便的方法.所以.把一台服务器做的安全..并不是哪么容易的事..特别是iis..经常去官方网站搜索资料是一个好习惯..还有就是经常性的访问日志..及注册表的用户还有加载运行的程序.及服务也是一个好方法..所以.要学会如何遇到问题如何处理问题!!!!

推荐一个软件 IIS守护程序 下载地址 http://www./softs/12793.html

解压后双击IISHelper.exe运行,然后点右下角的开始执行即可!常来网也是用的这个,比较实用的小软件。发现问题,就重启iis,保证网站的正常运行。

    
[3]解决关于IIS gzip不能正常启用的问题
    来源: 互联网  发布时间: 2013-12-24

1、gzip的下载安装 一键开启gzip

独立主机/VPS 一键开启IIS的GZIP方法 http://www./article/30151.htm

2、安装成功后,基本上是可以的, 一般情况下就是 gzip缓存目录c:\windows\IIS Temporary CompressedFiles 目录,我们建议放到d盘,并给everyone全部权限即可。

重新启动iis即可。


IIS启用Gzip压缩造成OpenFlashChart不能正常显示问题及解决方法

在.NET中使用OpenFlashChart控件显示图表时,谁会想到图表显示正常与否竟然和服务器IIS是否启用了Gzip压缩有关呢?
两个站点用着同一套程序,一个站点OpenFlashChart图表能正常显示,另一个站点却显示为“ioerror Error #2032”,而且这个问题只出现在IE6浏览器中,火狐和IE7中都能正常显示,是什么原因造成的呢?
百度和Google一番,才查到原因是服务器上采用了Gzip压缩优化网站和no-cache同时出现造成的,解决方法是在返回的页面里增加HTTP头,示例代码如下:

代码如下:

Response.Clear();
//Response.CacheControl = "no-cache";
//用这句代替上面一句
Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate, max-age=-1");
Response.Write(chart.ToString()); //输出openflashchat流
Response.End();


以下是详细介绍,适合手工配置gzip的朋友

一. HTTP压缩概述

HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如gzip等压缩HTML、JavaScript或 CSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。当然,同时也会增加一点点服务器的负担。Gzip是比较常见的 一种HTTP压缩算法。
本文介绍的HTTP压缩方式,采用的是Windows系统设置的方式,优点是效率较高。

二. HTTP压缩工作原理

Web服务器处理HTTP压缩的工作原理如下:
Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩;
如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;
如果请求文件是HTML、CSS等静态文件,Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;
如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;
如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;
如果请求文件是ASPX等动态文件,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。

小编在网上找过很多的资料,gzip对搜索引擎Seo不会有影响,并且Baidu也明确表示可以解析Gzip数据。
我们用站长站的工具来检测一下Gzip以后的效果:

不过注意 GZIP一般只对 Html 之类的文本有效果,而对已经压缩过了的图片如 gif,jpg 等是没有效果的。
下载我们来一步一步教大家如何打开IIS的Gzip
1. 打开Internet信息服务(IIS)管理器,右击“网站”-》“属性”,选择“服务”。在“HTTP压缩”框中选中“压缩应用程序文件”和“压缩静态文件”,按需要设置“临时目录”和“临时目录的最大限制”;

2. 在Internet信息服务(IIS)管理器,右击“Web服务扩展”-》“增加一个新的Web服务扩展。。.”,在“新建Web服务扩展”框中输入扩展名“HTTP Compression”,添加“要求的文件”为c:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中“设置扩展状态为允许”;

3. 使用文本编辑器打开c:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),
在打开之前请注意:
1. 在编辑MetaBase.xml前需要停止IIS,可以使用 微软键+R运行:net stop iisadmin
2. 修改完成后重启VPS

找到Location =“/LM/W3SVC/Filters/Compression/gzip用于设置gzip压缩,
找到Location =”/LM/W3SVC/Filters/Compression/deflate“用于设置deflate压缩。 上面两个节点紧挨着。并且设置的属性相同。
如果需要压缩动态文件,则将HcDoDynamicCompression设置为”TRUE“,
并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名,如aspx;
如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置为”TRUE“,
并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml、css等;
HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数值在0-10, 默认为0。
HcDynamicCompressionLevel属性说明:HcDynamicCompressionLevel Metabase Property
HcOnDemandCompLevel 属性说明:HcOnDemandCompLevel Metabase Property
说明: 这两个属性值一般推荐设置为9, 具有最佳性价比。

关键的配置来了:导致GZIP无法生效就是下面的配置网上没有提到。

HcNoCompressionForHttp10="TRUE"
HcNoCompressionForProxies="TRUE"
改为
HcNoCompressionForHttp10="FALSE"
HcNoCompressionForProxies="FALSE"

    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell 函数参数 iis7站长之家
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3