Imageantialias вызывает функцию undefined с ошибкой GD

Мне нужна помощь с php script. Это CMS, которая была внедрена на веб-сайт. При попытке добавить новое ИЗОБРАЖЕНИЕ ИЗОБРАЖЕНИЯ или попытку редактировать текущие изображения, я получаю следующую ошибку:

Неустранимая ошибка: вызов функции undefined function imageantialias() в /home/mounts/home/m/mclh/web/admin/library/functions.php в строке 233

Это мой код для этой области:

   if ($tmpDest['extension'] == "gif" || $tmpDest['extension'] == "jpg")
    {
       $destFile  = substr_replace($destFile, 'jpg', -3);
       $dest      = imagecreatetruecolor($w, $h);
       imageantialias($dest, TRUE);
    } elseif ($tmpDest['extension'] == "png") {
       $dest = imagecreatetruecolor($w, $h);
       imageantialias($dest, TRUE);
    } else {
      return false;
    }

Линия 233 является пятой строкой вниз.

Ответы

Ответ 1

UPDATE. Кажется, что функция imageantialias() доступна только в том случае, если PHP скомпилирован с помощью GD, поэтому достаточно не, чтобы расширение было добавлено через файл расширения.

Из руководства PHP:

Примечание. Эта функция доступна только если PHP скомпилирован в комплекте версии библиотеки GD.

Пожалуйста, проверьте phpinfo() и посмотрите, если вы найдете флаг --with-gd=shared (или похожий флаг, возможно, только --with-gd). Если вы не можете найти его, ваш PHP должен быть перекомпилирован с этим флагом.

Более подробно: Расширения PHP могут быть загружены путем включения файла .dll(Windows) или .so(Unix) через php.ini или их можно скомпилировать с помощью PHP. Компиляция звуков ужасна и сумасшедшая, но на самом деле это очень просто. Все, что вам нужно сделать (Unix):

  • скопируйте строку компиляции, которая показана на вашем phpinfo()
  • добавить новый флаг
  • бежать
    • ./настроить... все содержимое вашего phpinfo плюс новый флаг
    • make clean
    • сделать
    • make install
  • посмотрите на свой phpinfo() и улыбнитесь:)

Первый ответ (не оказался верным):

imageantialias() является функцией расширения

Ответ 3

Похоже, что Debian/Ubuntu PHP не связывает библиотеку GD с ней, по какой-то причине безопасности. Вы должны перекомпилировать PHP, следуя этому полезному пошаговому руководству по этому поводу с Debian/Ubuntu: http://www.maxiwebs.co.uk/gd-bundled/compilation.php

Откройте терминал. Станьте root, набрав su и введите свой пароль root при появлении запроса.

Загрузите некоторые пакеты, которые нам понадобятся для установки. Тип apt-get install build-essential debhelper fakeroot dpkg-dev mysql-server. Когда MySQL устанавливает пароль root, подумайте об одном, а затем сохраните его в безопасности. Измените текущий каталог на свой источник. cd/usr/src.

Загрузите исходный код PHP 5, набрав apt-get source php5. Нам также нужны зависимости PHP 5. Чтобы загрузить их, введите apt-get build-dep php5.

Перейдите в загруженный каталог PHP. cd php5-XXXX. просто нажмите после того, как вы набрали php5-, чтобы завершить имя папки.

Теперь нам нужно отредактировать файл конфигурации, чтобы изменить его в комплекте GD. Введите nano debian/rules.

Найдите строку, которая говорит --with-gd = shared,/usr --enable-gd-native-ttf\и измените ее на --with-gd = shared -enable-gd-native-ttf\by удаление, /usr. (Нажмите ctrl + w, чтобы найти что-то, если вы ищете gd, это почти второе вхождение). Чтобы сохранить файл, нам нужно нажать ctrl + x, затем нажмите y, а затем введите.

Теперь нам нужно отредактировать файл установки MySQL. Тип nano debian/setup-mysql.sh. Примечание. Если этот файл не существует, не беспокойтесь, вы можете пропустить шаги 10 и 11.

Найдите строку $mysqld > $datadir/run.log 2 > & 1 и измените ее на $mysqld --user = root > $datadir/run.log 2 > & 1 и добавив -user = root. Чтобы сохранить файл, нам нужно нажать ctrl + x, затем нажмите y, а затем введите.

Теперь мы сделали настройку, и теперь нам нужно ее скомпилировать. Введите dpkg-buildpackage -rfakeroot или если вы используете Ubuntu 11.10, вы должны ввести dpkg-buildpackage -d, это займет некоторое время.

Когда это будет сделано, вы должны будете загрузить файлы .deb в родительский каталог. Найдите тот, который начинается с php5-gd.

Установите его двойным щелчком по нему или с терминала, введите dpkg -i php5-gdXXXXXXX, просто нажмите после того, как вы набрали php5-gd, чтобы завершить имя файла.

Теперь нам нужно остановить обновления, заменив вашу блестящую новую GD-библиотеку на обычную несвязанную версию, удерживая пакет. Выполните следующую команду: apt-get install wajig. Скажите "да" установке.

После установки введите следующее: wajig hold php5-gd.

Поздравляем! Теперь у вас установлена ​​связанная версия библиотеки GD, теперь иди и будьте творческой!

Ответ 4

В соответствии с PHP Manual Changelog для PHP версии 7.2.0:

imageantialias() теперь вообще доступен. Раньше это было только доступно, если PHP был скомпилирован в комплекте версии GD библиотека.

Итак, есть некоторые возможности исправить это.

Ответ 5

Эта функция является частью библиотеки GD. Возможно, библиотека не установлена ​​в вашей среде PHP.

Подробные сведения о том, как включить GD, можно найти здесь: http://www.php.net/manual/en/image.installation.php

Ответ 6

Это означает, что вы либо неправильно написали функцию imageantialias(), либо не указали, что функция в вашем коде или код третьей стороны, к которой она принадлежит, не была включена в ваш текущий документ.

UPDATE: GD установлен. Это загадка.