2017-04-20 95 views
1

這是一個奇怪的錯誤,我遇到並伸出手去查看是否有人可以幫助我確定發生這種情況的原因。php在Dreamhost上調整類大圖失敗的文件大小

所以基本上,我有一個表單使用jquery ajax上傳圖像,然後使用調整大小類http://jarrodoberto.com/articles/2011/09/image-resizing-made-easy-with-php來裁剪圖像。我注意到,超過1mb的圖片腳本失敗,沒有錯誤信息。另外,這隻發生在dreamhost上。在我的主人gatorserver一切正常,應該如此。

我覺得奇怪的是,尺寸較小的圖像似乎工作正常。所有的PHP ini設置都遠高於限制,所以我知道這不是問題,兩臺服務器都運行php 5.6。並有錯誤報告。

我也直接測試了這個腳本沒有ajax,它不能在1mb以上的圖像上工作。

include('resize-class.php'); 
$resizeObj = new resize('photo.jpg'); 
$resizeObj -> resizeImage(250,250,'auto'); 
$resizeObj -> saveImage('photo-test.jpg', 100); 

所以這顯然是與腳本和如何設置dreamhost的東西。

任何想法爲什麼會發生這種情況?

在進一步的測試我發現用盡 94371840個字節此錯誤 允許的內存大小此相同的測試僅產生Dreamhost上,只有某些JPG文件這個錯誤,而不是HostGator的。所以這與dreamhost和某些jpg文件有關。

+0

腳本是否立即失敗,或者它會緊縮30秒,然後停止而不返回結果? – rickdenhaan

+0

立即失敗。 – drooh

回答

0

的解決方案是Dreamhost的PHPRC文件位於/home/username/.php/5.6/phprc修改類似於以下

upload_max_filesize = 100M 
post_max_size = 105M 
max_execution_time = 500 
max_input_time = 250 
memory_limit = 256M 

https://help.dreamhost.com/hc/en-us/articles/214894037-How-do-I-create-a-phprc-file-via-FTP-

有一點重要的東西注意:更改後的php設置需要大約10分鐘才能生效,因爲我假設它們是常常重新啓動的cgi進程的一部分。

內存限制似乎導致錯誤。

不知道爲什麼這個resize-class.php腳本需要大量內存來調整1MB照片的大小。

+0

ImageMagick和GD都採用壓縮的JPG格式,並將其轉換爲未壓縮的位圖來處理它,因此1MB文件將佔用比這更多的RAM。 – ceejayoz

+0

啊,這是有道理的,太有趣了,dreamhost的限制不允許這樣.. – drooh

+0

共享主機上運行資源限制是非常普遍的。你得到你所付出的。 – ceejayoz