我對PHP相當陌生,但是當通過ShareX將圖像上載到我的服務器並使用自定義腳本(特別是this one)時,我經歷了多個不同腳本和服務器的反覆問題。使用PHP腳本上傳圖片失敗
我已經遷移了服務器(我在共享主機上,現在我在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)錯誤網關錯誤,'響應:'只是頁面的源代碼(如果腳本檢測到您沒有上傳任何內容,它將設置爲將您重定向到此頁面失敗),和「堆棧跟蹤」如下:
堆棧跟蹤:
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的東西,但之後它總是失敗,並且腳本中存在自定義錯誤消息。
可能是你應該嘗試增加post_max_size – Cherry
這是在8MB,增加它並沒有幫助。對於大於幾百KB的文件,而不是100%的時間,會出現該問題。 – Bart944
你嘗試過增加它嗎?我在將文件上傳到服務器時遇到了同樣的問題。 Php正在拋出錯誤。當我增加郵政大小,它爲我工作得很好。 – Cherry