更改PHP临时目录

我有一个用于媒体转换的网站,用户可以上传视频,音频或图像文件,并将其转换为3种流行格式。 转换脚本工作正常,但我遇到了文件上传到tmp目录的问题。 我已经尝试了两种情况,我都很好,但都不起作用,在我看来是权限相关,但我似乎可以解决这个问题。 我现在在本地工作,而我正在解决问题。

情景1:

  • 文件被上传到默认的本地tmp目录(C: WINDOWS tmp) - 工作正常
  • 尝试使用已上传的tmp文件运行转换脚本,但它不起作用 - 尽管从命令行运行效果很好
  • 情景2:

  • 文件上传到IIS_IUSRS完全控制(用于测试)并且文件不会上传的目录 - 是该目录拼写正确(我在php.ini中更改了upload_tmp_dir值)
  • 将XMLHttpRequest发送到PHP文件的网站以及PHP文件本身驻留的网站都是IIS网站,因此我假设该脚本正在以IIS_IUSRS的身份运行。

    编辑:临时文件不再为方案1创建,不能找出为什么我假设玩权限弄乱了东西,因为代码没有改变。 我已经给IIS_USRS和USERS的修改尝试让它再次运行,但没有运气:(尽管错误日志仍在写入相同的文件夹......怪异的

    注意:我发送的$ _FILES变量的“tmp_name”值仍然具有“C: WINDOWS Temp '文件名'”的值,但该文件不存在

    编辑:另一个新的发展,它似乎不是一个权限问题,因为我可以通过$ temp_file = tempnam(sys_get_temp_dir(),'Test')创建一个临时文件; 但它显然不包含上传的数据,所以它不能解决我的问题


    这不是一个解决的问题,更是一种解决方法。 这个问题似乎与$_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']));
    

    我有我的临时文件进行处理。


    由于APPLICATION POOLS上的一项设置,PHP忽略了upload_tmp_dir。 这不是php-cgi.exe或php.ini或权限问题。 转到遇到问题的网站的应用程序池:1.右键单击2.选择高级设置3.滚动到LOAD USER PROFILE并将其设置为FALSE。

    那为我做了诡计。

    链接地址: http://www.djcxy.com/p/72801.html

    上一篇: Changing PHP Temp Directory

    下一篇: Can't create temporary file in PHP despite the temp directory exists