为了账号安全,请及时绑定邮箱和手机立即绑定

PHP:扫描目录、压缩和覆盖图像 - 脚本在生产中失败,仅在本地产生警告

PHP:扫描目录、压缩和覆盖图像 - 脚本在生产中失败,仅在本地产生警告

PHP
jeck猫 2021-11-05 10:36:05
我有这个作为 cron 任务运行的代码。基本上它所做的(应该)是通过一个文件夹,找到大于指定大小的图像,重新调整它们并覆盖它们。在本地测试时(使用相同的 1300 多个图像)它可以工作。如果我删除imagecreatefromjpeg和imagecreatefrom_png上的@错误抑制,我会收到以下警告:    Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error:     Invalid SOS parameters for sequential JPEG in     C:\xampp56\htdocs\svamz\static\uploaded\image_compress.php on line 70    Warning: imagecreatefromjpeg(): './certificate/POCAJT4.jpg' is not a     valid JPEG file in     C:\xampp56\htdocs\svamz\static\uploaded\image_compress.php on line 70   POCAJT4.jpg resize Failed!此警告是针对某些图像输出的,但大多数图像被压缩并且这些带有警告的图像被跳过。问题是在服务器(Apache2、PHP 5.6.40)上执行相同的代码只会产生 500 HTTP 错误。没有错误,没有警告(这使得调试很麻烦)源/目标目录是可写的。我还通过使用filesize($imagePath) > 8000000 && filesize($imagePath) < 9000000更改 if 语句以仅包含一部分图像来测试代码,并且在服务器上运行良好。但是一旦我尝试了一系列包含这些有问题的图像的文件大小,它就会恢复到 500。我试图通过try catch解决问题,我还使用set_error_handler()尝试在服务器上捕获E_WARNING消息,但没有结果。gd_info()在本地和服务器上是相同的。我认为它是无关的,但php -v(也是 error.log)连同它的正常输出给出了这个: 加载失败 /usr/local/lib/ZendGuardLoader5.6.so: /usr/local/lib/ZendGuardLoader5.6.so : 无法打开共享对象文件: 没有那个文件或目录ini_set('error_reporting', E_ALL);ini_set('max_execution_time', 0);$imagesDirectory = './certificate/'; //Source directory$destinationDirectory = './certificate/'; //Destination directory$newImageWidth = 1600;$newImageHeight = 1200;$quality = 80;// Source image directory, loop through each Image and resize it.if($dir = opendir($imagesDirectory)){        目标是在可能的情况下进行压缩和覆盖,如果没有则跳过。我无法控制最终用户上传的图像。任何形式的帮助将不胜感激。
查看完整描述

1 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

@misorude 此时无法执行此操作,因为此时具有写入权限的人不在。


原来设置只是ini_set('error_reporting', E_ALL); 是不足够的。


这对我有用:


ini_set('display_errors', 1);

ini_set('display_startup_errors', 1);

error_reporting(E_ALL);

错误是内存不足。


查看完整回答
反对 回复 2021-11-05
  • 1 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号