Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php imagewebp函数失败而不生成任何错误_Php_Gd - Fatal编程技术网

Php imagewebp函数失败而不生成任何错误

Php imagewebp函数失败而不生成任何错误,php,gd,Php,Gd,我想在另一个文件夹中将jpeg图像文件夹转换为webp格式。我正在使用GD库中的imagewebp函数。调用函数时,代码只是暂停。虽然文件实际上是创建的,但它的长度为零。不会抛出任何错误 GDU信息显示了2.1版,WebP支持为1 php版本5.6 如果我更改为imagepng(),则一切正常,因此库已安装并正常工作 我试过用单个的小图片,以防它是内存问题,但仍然有同样的问题 还尝试了imagecreatefromjpeg而不是imagecreatefromstring,但相同 将质量过滤器移除

我想在另一个文件夹中将jpeg图像文件夹转换为webp格式。我正在使用GD库中的imagewebp函数。调用函数时,代码只是暂停。虽然文件实际上是创建的,但它的长度为零。不会抛出任何错误

GDU信息显示了2.1版,WebP支持为1

php版本5.6

如果我更改为
imagepng()
,则一切正常,因此库已安装并正常工作

我试过用单个的小图片,以防它是内存问题,但仍然有同样的问题

还尝试了imagecreatefromjpeg而不是imagecreatefromstring,但相同

将质量过滤器移除为默认值(如省略65),但效果相同

我还尝试将单个文件直接输出到浏览器。这适用于imagepng,但imagewebp出现404错误

$jpgfiles = glob ('jpegs/*.jpg');
echo "<p>" . sizeof( $jpgfiles ) . " files found. </p>"; // Shows 7 files   
foreach($jpgfiles as $j) {
    echo "<p>Found $j</p>"; // Shows first found file
    $filename = substr( $j, 6, -4) . '.webp'; // Keep the same filename but change extension
    echo "<p>$filename</p>";
    $jpgimage = imagecreatefromstring( file_get_contents( $j ) );
    if( !$jpgimage ) die ("Failed on imagecreatefromstring");

   if( $webpimage = imagewebp( $jpgimage, 'webps/' . $filename, 65 )) echo "$filename created"; // This is never echo'd
   else die ("Failed on imagewebp"); // Doesn't die either
   imagedestroy ( $jpgimage );

}
$jpgfiles=glob('jpeg/*.jpg');
回声“”。sizeof($jpgfiles)。“找到文件。

”;//显示7个文件 foreach($JPG文件为$j){ echo“找到$j

”;//显示找到的第一个文件 $filename=substr($j,6,-4)。“.webp”;//保持相同的文件名,但更改扩展名 echo“$filename

”; $jpgimage=imagecreatefromstring(文件获取内容($j)); 如果(!$jpgimage)死亡(“在imagecreatefromstring上失败”); 如果($webpimage=imagewebp($jpgimage,'webps/'.$filename,65))回显“$filename created”;//这永远不会回显 else die(“在imagewebp上失败”);//也不会死 图像销毁($jpgimage); }

我希望创建映像,但程序执行停止。错误日志不包含任何信息。永远不会调用die命令。webp文件已创建,但长度为零。

那么,呃,错误报告真的在进行吗?为测试创建/保存一个空图像怎么样<代码>strace php-r'imagewebp(imagecreatetruecolor(10,10));'错误报告(E_全部);imagewebp(imagecreatetruecolor(10,10),'stack.webp');ran出现404错误时,创建了stack.webp文件,但长度为零,error.log文件为空。在命令行上进行测试可能比在进程崩溃时查看404(apache或fpm日志,顺便说一句)更有效率。我不熟悉从命令行运行,但我尝试过,得到了无数行文本。最后两行被SIGABRT++终止了++++中止Apache错误日志检测到***堆栈破坏***:/opt/cpanel/ea-php56/root/usr/bin/php cgi终止了所以,呃,错误报告真的在进行吗?为测试创建/保存一个空图像怎么样<代码>strace php-r'imagewebp(imagecreatetruecolor(10,10));'错误报告(E_全部);imagewebp(imagecreatetruecolor(10,10),'stack.webp');ran出现404错误时,创建了stack.webp文件,但长度为零,error.log文件为空。在命令行上进行测试可能比在进程崩溃时查看404(apache或fpm日志,顺便说一句)更有效率。我不熟悉从命令行运行,但我尝试过,得到了无数行文本。最后两行被SIGABRT++终止了++++中止Apache错误日志检测到***堆栈破坏***:/opt/cpanel/ea-php56/root/usr/bin/php cgi终止