我是 PHP 的新手,但在使用自定义脚本通过 ShareX 将图像上传到我的服务器时,我遇到了多个不同脚本和服务器反复出现的问题,特别是 this one .
我已经迁移了服务器(我在共享主机上,现在我在 VPS 上),并且已经改用这个脚本,但我仍然遇到问题,我不知道到底是什么问题是。
问题(不会 100% 发生,但大部分时间会发生;有时重试后会起作用)是上传超过一定大小的图片,大约 250-500KB 超时或大部分时间失败. 60 秒后,我在 ShareX 上收到 502 错误(错误网关)。
我查找了类似问题(“大”文件在 PHP 中超时)的常见解决方案,并检查了我的 PHP.ini 文件中的以下变量。
max_execution_time = 60
max_input_time = 60
memory_limit = 128M
post_max_size = 8M
上传成功时,上传到返回上传图片的链接,总共需要几秒,但失败时,总是60秒,然后报错。没有中间立场,要么立即成功,要么在 60 秒后超时。
我不确切地知道如何找到错误(如果有的话)到底是什么。发生这种情况时,ShareX 报告 (502) Bad Gateway 错误,“响应:”只是页面的源代码(脚本设置为在检测到您没有上传任何内容或它时将您重定向到此页面失败),并且“堆栈跟踪”如下:
堆栈跟踪:
at System.Net.HttpWebRequest.GetResponse()
at ShareX.UploadersLib.Uploader.UploadData(Stream dataStream, String url, String fileName, String fileFormName, Dictionary`2 arguments, NameValueCollection headers, CookieCollection cookies, ResponseType responseType, HttpMethod method, String requestContentType, String metadata)
编辑:我的服务器在 cloudflare 后面,我读到 cloudflare 可能会导致问题。但是,我检查了设置,cloudflare 上的最大上传大小设置为 100MB,暂停它似乎没有帮助。
编辑:我删除了 8M 的 post_max_size 限制,似乎部分解决了这个问题。我现在可以上传最多约 3MB 的东西,但之后它总是失败并显示来自脚本的自定义错误消息。
最佳答案
当增加文件 POST 限制时,您可能需要更改至少 2 个设置:
upload_max_filesize = 30M
post_max_size = 32M
不要认为它与 CloudFlare 有任何关系。如果上述设置不起作用,请查看是否可以检查 Apache 的错误日志。
关于php - 使用 PHP 脚本上传图片失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29679977/