Неустранимая ошибка Imagick (Uncaught ImagickException), возникающая в определенный момент - PullRequest
0 голосов
/ 26 мая 2020

Я установил простой скрипт для извлечения обложек в формате PDF, их сохранения и отображения рядом с названием книги. Книг довольно много, например сотня, и скрипт в определенный момент переходит в alt с сообщением об ошибке:

Fatal error: Uncaught ImagickException: Postscript delegate failed `[ghostscript library 9.25] -sstdout=%stderr -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 '-sDEVICE=pngalpha' -dTextAlphaBits=4 -dGraphicsAlphaBits=4 '-r72x72' -dFirstPage=1 -dLastPage=1 '-sOutputFile=/tmp/magick-27554Ici68mMMGVSY%d' '-f/tmp/magick-27554GJYgTikvACHZ' '-f/tmp/magick-27554BNiFmZKXjmw0'': **** Error reading a content stream. 
The page may be incomplete. Output may be incorrect. Error: /typecheck in --runpdf-- Operand stack: --dict:4/13(L)-- --dict:5/14(L)-- --dict:5/14(L)-- 61 15898520 61 0 --nostringval-- Contents --dict:9/9(L)-- false --nostringval-- --nostringval-- --nostringval-- 
Execution stack: %interp_exit .runexec2 --nostringval-- runpdf --nostringval-- 2 %stopped_push --nostringval-- runpdf runpdf false 1 %stopped_push 2047 1 3 %oparray_pop 2046 1 3 %oparray_pop 2026 1 3 %oparray_pop in /var/www/website/public_html/list.php on line 28

Вот код, печатающий книги и обложки, который вроде бы работает:

 while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $book = $row["bookname"];
    $path = $host."/libreria/".$row["bookname"];
    $truepath = basename($path);
    $coverName = $truepath."-cover.png";
    $fileArr = explode('.', $book);
    $fileExt = strtolower(end($fileArr));

      if ($fileExt == "pdf") {
      $im = new imagick($book.'[0]');
  $im->setImageFormat('png');
  $im->resizeImage(150,200,1,0);
  $im->writeImage('/var/www/test1.putmywebsite.online/public_html/libreria/covers/'.$coverName);

  echo "<a href='$truepath'>"."<img src='covers/".$coverName."'>".$row["bookname"]."</a><br>";
} else {
      echo "<a href='$truepath'>".$row["bookname"]."</a><br>";
      $bookArray[] = $row["bookname"];
}

Время выполнения механизма PHP составляет 300 с, похоже, не проблема тайм-аута. Сообщение об ошибке для меня совершенно крипти c; файл, в котором я получил фатальное исключение, работает, попробовал мою локальную версию скрипта, и даже удалив его, я снова получаю ту же ошибку. Любое предложение? Заранее благодарим за любой ответ или комментарий :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...