使用PHP脚本上载图像失败

时间:2015-04-16 15:54:44

标签: php apache

我对PHP很新,但是在使用自定义脚本(特别是this one通过ShareX将图像上传到我的服务器时,我通过多个不同的脚本和服务器出现了反复出现的问题。 / p>

我已经迁移了服务器(我在共享主机上,现在我正在使用VPS),并且已经改为使用此脚本,但我仍然遇到了问题而我我不知道究竟是什么问题。

问题(100%的时间没有发生,但大部分时间都在发生;有时它在重试后有效)是上传超过一定大小的图像,大约250-500KB次或大部分时间失败。 60秒后,我在ShareX上收到502错误(Bad Gateway)。

我已经查找了类似问题的常见解决方案("大型"文件在PHP中超时),并检查了我的PHP.ini文件中的以下变量。

max_execution_time = 60
max_input_time = 60
memory_limit = 128M
post_max_size = 8M

上传成功后,上传总共需要几秒钟,并返回上传图片的链接,但是当它失败时,它总是60秒,然后是错误。没有中间立场,它可以立即成功,也可以在60秒后超时。

我不确切地知道如何找到错误(如果有的话)的确切内容。当它发生时,ShareX报告(502)错误的网关错误,响应:'只是页面的源代码(脚本设置为如果它检测到您没有上传任何内容或它失败,则将您重定向到此页面),以及“堆栈跟踪”#39;如下:

堆栈跟踪:

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,暂停它似乎没什么帮助。

编辑:我删除了post_max_size的限制,该限制为8M,似乎已部分修复了该问题。我现在可以上传大约3MB的内容,但之后它总是会失败并显示脚本中的自定义错误消息。

1 个答案:

答案 0 :(得分:0)

增加文件POST限制时,您可能需要更改至少2个设置:

upload_max_filesize = 30M

post_max_size = 32M

不要认为它与CloudFlare有任何关系。如果以上设置不起作用,请查看是否可以检查Apache的错误日志。