我有一个媒体转换网站,用户可以上传视频,音频或图片文件,并将其转换为3种流行格式。转换脚本工作正常但我在上传文件的tmp目录时遇到了一些问题。我已经尝试了两种情况,我很好,但都不起作用,在我看来是权限相关但我似乎可以解决问题。 我现在正在当地工作,而我正在解决问题。
情景1:
情景2:
将XMLHttpRequest发送到PHP文件的javascript以及PHP文件本身所在的站点都是IIS站点,因此我假设该脚本作为IIS_IUSRS运行。
编辑:对于场景1,根本不再创建临时文件,无法弄清楚为什么我假设玩权限搞砸了,因为代码没有改变。我已经修改了IIS_USRS和USERS试图让它再次运行但没有运气:(虽然错误日志仍在写入同一个文件夹......很奇怪
注意:我发送的$ _FILES变量的“tmp_name”值仍为“C:\ WINDOWS \ Temp \'filename'”,但文件不存在
编辑:另一个新的开发,它似乎不是权限问题,因为我可以通过$ temp_file = tempnam(sys_get_temp_dir(),'Test')创建一个临时文件;但它显然不包含上传的数据,因此它无法解决我的问题答案 0 :(得分:0)
这不是一个问题,而是更多的解决方法。问题似乎与此有关
$_FILES['file']['tmp_name'];
当我回显内容时,它看起来像我期望的那样但是没有文件出现。因此,我不必利用自然发生的那个过程,而是采取手动方法。我所做的是以下内容:
创建临时文件
$temp_file = tempnam(ini_get('upload_tmp_dir'), 'php');
然后添加$ _POST请求期间创建的临时文件中的内容。 (有些如何在$ _FILES变量中,即使文件不在我查看目录时也是如此)
file_put_contents($temp_file, file_get_contents($_FILES['file']['tmp_name']));
我有我的临时文件进行处理。
答案 1 :(得分:0)
由于APPLICATION POOLS上有一个设置,PHP忽略了upload_tmp_dir。 它不是php-cgi.exe,也不是php.ini或权限问题。 转到遇到问题的网站的应用程序池: 1.右键单击 2.选择高级设置 3.滚动到LOAD USER PROFILE并将其设置为FALSE。
这对我有用。