Почему я получаю сообщение об ошибке «попытка вызвать функцию imagecreatefrompng», когда gd включен?

В настоящее время я пытаюсь сохранить изображение на своем локальном сервере с URL-адреса со следующим кодом:

private function getDragontailImage() {
   /* load image from the url */
   $img = imagecreatefrompng('https://ddragon.leagueoflegends.com/cdn/10.25.1/img/champion/Aatrox.png');

   /* Save the image on my local server but the execution actualy does not reach this point */
   file_put_contents('my/local/path', $img);
}

К сожалению, возникает следующая ошибка:

Попытка вызвать функцию "imagecreatefrompng" из пространства имен "Приложение\Контроллер".

Именно в этом пространстве имен я вызываю функцию. Насколько я понимаю, эта ошибка часто возникает, когда делаются грамматические ошибки. Я сравнил свой синтаксис с синтаксисом в руководстве по php, но до сих пор не вижу, что я сделал не так.

До сих пор я также проверял эти пункты:

  • Мой файл composer.json содержит "ext-gd": "*", который необходим для функции.
  • В моем файле php.ini есть allow_url_fopen = On, чтобы разрешить использование URL-адреса в качестве параметра.
  • В моей информации о php я могу прочитать, что поддержка GD и поддержка PNG включены.
  • Я перезапустил свой локальный сервер после этих изменений.

Я не знаю, важная ли это информация, но я использую эту командную строку для запуска моего локального сервера:

php -S локальный: 8000 -t публичный/

Что я пропустил ?

Может быть, попробуйте использовать $img = \imagecreatefrompng('https://ddragon.leagueoflegends.com/cdn‌​/10.25.1/img/champio‌​n/Aatrox.png');, чтобы заставить разрешение пространства имен PHP выглядеть в глобальном масштабе.

LeviathanCalumet 13.12.2020 15:55

Результат вашего phpinfo(); может помочь.

LeviathanCalumet 13.12.2020 15:57

@LeviathanCalumet Совет \imagecreatefrompng не сработал. Что касается phpinfo();, какая информация будет актуальной? Кстати, я заметил, что раздел gd отсутствует, когда я запускаю функцию, но это происходит, когда я обращаюсь к вкладке «информация о php» из MAMP. Значит ли это, что gd установлен неправильно?

Bpicco 13.12.2020 16:10
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
3
422
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не специалист по MAMP или любой (L/W/M/X)версии AMP, но, возможно, вам следует решить свою проблему следующим образом:

В результате выполнения phpinfo(); у вас должна быть запись для пути к файлу конфигурации (php.ini), откуда разрешается php.ini.

Затем в этом файле php.ini должна быть строка с комментариями, например ;extension=gd.so. Вам нужно будет раскомментировать эту строку (убрать точку с запятой), чтобы сделать gd активным.

Другие вопросы по теме