2015-04-16 48 views
3

我對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的東西,但之後它總是失敗,並且腳本中存在自定義錯誤消息。

+0

可能是你應該嘗試增加post_max_size – Cherry

+0

這是在8MB,增加它並沒有幫助。對於大於幾百KB的文件,而不是100%的時間,會出現該問題。 – Bart944

+0

你嘗試過增加它嗎?我在將文件上傳到服務器時遇到了同樣的問題。 Php正在拋出錯誤。當我增加郵政大小,它爲我工作得很好。 – Cherry

回答

0

當增加文件發佈限制,您可能需要更改至少2個設置:

的upload_max_filesize = 30M

的post_max_size = 32M

不認爲這有什麼關係的CloudFlare。如果上述設置不工作,看看你是否可以檢查Apache的錯誤日誌。