imageantialias вызывает неопределенную ошибку функции с установленным GD

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

Неустранимая ошибка: вызов неопределенной функции 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 – 5-я строка вниз.

Solutions Collecting From Web of "imageantialias вызывает неопределенную ошибку функции с установленным GD"

ОБНОВЛЕНИЕ : Кажется, функция imageantialias() доступна только в том случае, если PHP скомпилирован с GD, поэтому недостаточно, чтобы расширение включалось через файл расширения.

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

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

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

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

  1. скопируйте строку компиляции, которая показана на вашем phpinfo ()
  2. добавить новый флаг
  3. бег
    • ./configure … все вещи из вашей phpinfo плюс новый флаг
    • очистить
    • делать
    • сделать установку
  4. посмотрите на свой phpinfo () и улыбнитесь 🙂

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

imageantialias() является функцией расширения PHP GD . Установлен и правильно настроен GD?

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

Посмотрите на свой phpinfo (), чтобы узнать, правильно ли сделаны мои выводы. Там вы увидите, какую версию PHP вы используете, и вы также увидите, установлена ​​ли GD и работает!

Вот обходной путь для вашей проблемы. Просто скачайте rpm, извлеките gd-bundled.so отсюда и замените оригинальный gd.so на него.

Похоже, что 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 \, удалив / 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 удержать php5-gd.

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

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

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

В соответствии с Changelog руководства PHP для PHP версии 7.2.0 :

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

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

  • Если у вас PHP ниже версии 7.2.0, обновите его до версии PHP выше 7.2.0.
  • Если вы не можете или не можете обновить php, тогда скомпилируйте php с ./configure скриптом с флагом --with-gd .
  • Или вы можете установить расширение php-gd в комплекте без перекомпиляции PHP

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

UPDATE: установлен GD. Это тайна.