首页 php教程 php手册 IIS+php服务器无法上传图片解决办法

IIS+php服务器无法上传图片解决办法

Jun 13, 2016 am 11:25 AM
php.ini 上传 主要 办法 图片 服务器 测试 目的 解决 设置

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

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 (!@move_uploaded_file($f["tmp_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:Inetpubwwwrootuploads"    //这个路径就是自己设置的上传文件临时存储路径

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']    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:windowstemp目录,并且临时文件是以.tmp为后缀存储的,该文件马上就会被删除,所以你想通过操作系统的文件修改搜索功能是无法找到的,也就无法找到upload_dir_tmp的默认路径是哪里。

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


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

抖音如何设置定时发布作品时间?它如何设置视频时间长短? 抖音如何设置定时发布作品时间?它如何设置视频时间长短? Mar 27, 2024 pm 06:11 PM

在抖音上发布作品能够更吸引关注和点赞,但有时候我们可能难以实时发布作品,这时就可以利用抖音的定时发布功能。抖音的定时发布功能允许用户在预定的时间自动发布作品,这样可以更好地规划发布计划,增加作品的曝光率和影响力。一、抖音如何设置定时发布作品时间?要设置定时发布作品时间,首先进入抖音个人主页,在右上角找到“+”按钮,点击进入发布页面。在发布页面右下角有一个钟表的图标,点击进入定时发布界面。在界面中,你可以选择要发布的作品类型,包括短视频、长视频和直播等。接下来,你需要设置作品的发布时间。抖音提供了

请勿打扰模式在iPhone中不起作用:修复 请勿打扰模式在iPhone中不起作用:修复 Apr 24, 2024 pm 04:50 PM

即使在“请勿打扰”模式下接听电话也可能是一种非常烦人的体验。顾名思义,请勿打扰模式可关闭来自邮件、消息等的所有来电通知和警报。您可以按照这些解决方案集进行修复。修复1–启用对焦模式在手机上启用对焦模式。步骤1–从顶部向下滑动以访问控制中心。步骤2–接下来,在手机上启用“对焦模式”。专注模式可在手机上启用“请勿打扰”模式。它不会让您的手机上出现任何来电提醒。修复2–更改对焦模式设置如果对焦模式设置中存在一些问题,则应进行修复。步骤1–打开您的iPhone设置窗口。步骤2–接下来,打开“对焦”模式设

微博怎么设置水印在中间_微博设置水印在中间方法 微博怎么设置水印在中间_微博设置水印在中间方法 Mar 29, 2024 pm 03:31 PM

1、首先进入微博,然后点击右下角我,选择【客服】。2、然后在搜索框中输入【水印】选择【设置微博图片水印】。3、再去点击界面中的【链接】。4、接着在新打开的窗口中点击【图片水印设置】。5、最后勾选【图片中心】点击【保存】即可。

微博怎么设置定时发布_微博设置定时发布方法教程 微博怎么设置定时发布_微博设置定时发布方法教程 Mar 29, 2024 pm 03:51 PM

1、打开微博客户端,在编辑页面中点击三个小点,再点击定时发。2、点击定时发之后,在发布时间右侧就有时间选项,设置好时间,编辑好文章,点击右下角的黄色字定时发布即可。3、微博手机端暂时不支持定时发布,只能在PC客户端使用该功能哦!

抖音推荐和精选在哪里设置 抖音推荐和精选在哪里设置 Mar 27, 2024 pm 05:06 PM

抖音推荐和精选在哪里设置?在抖音短视频中是有精选和推荐两个分类,多数的用户不知道推荐和精选如何的设置,接下来就是小编为用户带来的抖音推荐和精选设置方法教程,感兴趣的用户快来一起看看吧!抖音使用教程抖音推荐和精选在哪里设置1、首先打开抖音短视频APP进入到主页面,点击右下角【我】专区选择右上角【三个横线】;2、之后在右侧会展开功能栏,滑动页面选择最底部的【设置】;3、然后在设置功能页面,找到其中的【个人信息管理】服务;4、最后跳转到个人信息管理页面,滑动【个性化内容推荐】后方的按钮即可设置。

大麦怎么设置抢票倒计时 大麦怎么设置抢票倒计时 Apr 01, 2024 pm 07:01 PM

大麦网购票时,为了确保能够准确掌握购票时间,用户可以设置一个悬浮时钟来进行抢票,详细的设置方法就在下文中,让我们一起学习下吧。大麦绑定悬浮时钟方法1.在手机中点击打开悬浮时钟app进入界面后,在设置秒杀提查的位置点击,如下图所示位置:2.来到新增记录的页面后,把在大麦网中复制的买票链接页面复制进去。3.接下来在下方设置好秒杀时间和通知时间,打开【保存到日历】后面的开关按钮,并在下方点击【保存】。4.点击开启【倒计时】,如下图所示:5.到提醒时间时在下方点击【开始画中画】的按钮。6.当购票时间到时

加入全新仙侠冒险!《诛仙2》'无为测试”预下载开启 加入全新仙侠冒险!《诛仙2》'无为测试”预下载开启 Apr 22, 2024 pm 12:50 PM

新派幻想仙侠MMORPG《诛仙2》“无为测试”即将于4月23日开启,在原著千年后的诛仙大陆,会发生怎样的全新仙侠冒险故事?六境仙侠大世界,全日制修仙学府,自由自在的修仙生活,仙界中的万般妙趣都在等待着仙友们亲自前往探索!“无为测试”预下载现已开启,仙友们可前往官网下载,开服前无法登录游戏服务器,激活码可在预下载安装完成后使用。《诛仙2》“无为测试”开放时间:4月23日10:00——5月6日23:59诛仙正统续作全新仙侠冒险篇章《诛仙2》以《诛仙》小说为蓝图,在继承原著世界观的基础上,将游戏背景设

抖音播放自动关闭怎么设置?播放过程自动退出什么原因? 抖音播放自动关闭怎么设置?播放过程自动退出什么原因? Apr 01, 2024 pm 12:06 PM

抖音作为当今最受欢迎的短视频平台之一,用户在享受短视频带来的乐趣时,也希望能够更好地控制自己的时间。最近,有用户反映抖音播放过程中会自动关闭,这让他们感到非常困扰。一、抖音播放自动关闭怎么设置?1.检查抖音版本请确保您使用的抖音版本是最新的。抖音会定期更新,修复已知问题。如果您的抖音版本过旧,可能会出现自动关闭的问题。您可以在应用商店检查并更新抖音。2.检查手机系统版本抖音播放自动关闭也可能与手机系统版本有关。请确保您的手机系统版本是最新的。如果手机系统版本过旧,可能会导致抖音运行不稳定。您可以

See all articles