2017-04-20 55 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