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()
является функцией расширения
Ответ 2
Вот обходной путь для вашей проблемы
Просто скачайте rpm, извлеките gd-bundled.so отсюда и замените оригинальный gd.so на него.
Ответ 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 установлен. Это загадка.