-6ren">
gpt4 book ai didi

php - 仅在 PHP 中上传某些文件(运行 Docker for Windows)

转载 作者:行者123 更新时间:2023-12-02 18:41:20 25 4
gpt4 key购买 nike

我在从 PHP 上传文件时遇到问题。奇怪的是,有些文件可以工作,而有些则不能。我可以使用以下脚本重现它:

<!DOCTYPE html>
<html>
<body>

<form action="test.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload" name="submit">
</form>

</body>
</html>

<?php

var_dump($_FILES);

当它失败时,输出是:
array(1) {
["fileToUpload"]=>
array(5) {
["name"]=>
string(13) "image_2_3.jpg"
["type"]=>
string(0) ""
["tmp_name"]=>
string(0) ""
["error"]=>
int(3)
["size"]=>
int(0)
}
}

据我了解,错误代码 3 表示它是部分上传但是,我不确定为什么它只发生在某些文件中。我在不起作用的文件中看不到模式。例如,其中一个不起作用的文件大约是 70kb,而另一个起作用的文件是 180kb,因此这似乎不是与文件大小相关的问题。

我在 Windows 10 上运行的 docker 容器上运行这个。docker 镜像基于官方 PHP图片。我已经测试了标签 5.5-apache 和 5.6-apache。代码本身是从 Windows 中的已安装卷运行的。

加载的 Apache 模块是:
core mod_so mod_watchdog http_core mod_log_config mod_logio mod_version
mod_unixd mod_access_compat mod_alias mod_auth_basic mod_authn_core
mod_authn_file mod_authz_core mod_authz_host mod_authz_user mod_autoindex
mod_deflate mod_dir mod_env mod_filter mod_headers mod_mime prefork
mod_negotiation mod_php5 mod_rewrite mod_setenvif mod_status

任何想法将不胜感激。

编辑:做了一个运行普通 php:5.5-apache 图像的独立测试,只提到了 PHP 代码,并且仍然能够重现该问题。

在我上次的测试中,这个文件产生了问题: http://s000.tinyupload.com/?file_id=14588523736227077930

而这个工作: http://s000.tinyupload.com/?file_id=03989814485857897493

最佳答案

经过进一步挖掘,我发现这是最近在 Docker 论坛上提到的一个 Unresolved 问题:https://forums.docker.com/t/php-file-upload-fails-with-upload-err-partial-on-docker-for-windows/18252

当前的解决方法(我已经测试过)是使用 http://dockerdocker.local而不是 http://localhost通过浏览器访问应用程序时。

关于php - 仅在 PHP 中上传某些文件(运行 Docker for Windows),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38563422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com